mysql集群 连接字符串_CentOS7-建立一个MySQL集群-建站-站长头条

news/2024/5/10 13:26:01/文章来源:https://blog.csdn.net/weixin_28366053/article/details/113957160

Standing up a MySQL cluster

此配方将指导您完成设置MySQL群集的过程。 通过跨多个系统划分数据并维护副本以避免单点故障,群集数据库可以应对可伸缩性和高可用性的挑战。

集群的成员称为节点。 MySQL集群中有三种节点类型:数据节点,API节点和管理节点。 数据节点负责存储数据。 然后,用户和进程连接到API节点以访问数据库。 管理节点作为整体管理集群。 虽然可以在同一系统上安装多个节点,但是,API节点和数据节点都可以托管在同一系统上。 但是,在同一系统上托管多个数据节点显然不是一个好主意,因为它否定了MySQL分发数据的努力。

准备

此配方演示了如何使用四个系统部署MySQL集群。 第一个系统将托管管理节点,我们假设它具有IP地址192.168.56.100。 第二个系统将托管API节点并具有地址192.168.56.101。 其余系统将配置数据节点,并使用地址192.168.56.102和192.168.56.103。 您需要使用root帐户或sudo在所有四个系统上进行管理访问.

怎么做。。。

请按照以下步骤设置群集MySQL数据库:

从MySQL网站下载集群存档,并使用tar解压缩其包:curl -L dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/ MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar | tar x在每个系统上,安装perl-Data-Dumper并将已安装的mariadb-libspackage替换为下载的MySQL-Cluster-shared软件包:yum install perl-Data-Dumper MySQL-Cluster-shared-gpl-*.rpmyum erase mariadb-libs在每个系统上安装MySQL-Cluster-server和MySQL-Cluster-client软件包:yum install MySQL-Cluster-{server,client}-gpl-*.rpm在托管管理节点的系统上,创建/ var / lib / mysql-cluster目录:mkdir /var/lib/mysql-cluster在/var/lib/mysql-cluster/config.ini中为管理节点创建集群的配置文件,如下所示:[ndbd default]NoOfReplicas = 2DataMemory = 100MIndexMemory = 10MServerPort = 2202[ndb_mgmd]hostname = 192.168.56.100[mysqld]hostname = 192.168.56.101[ndbd]hostname = 192.168.56.102[ndbd]hostname = 192.168.56.103启动管理节点:ndb_mgmd -f /var/lib/mysql-cluster/config.ini在管理节点系统的防火墙中打开端口1186:firewall-cmd --zone=public --permanent --add-port=1186/tcpfirewall-cmd --reload在每个数据节点的系统上,使用以下命令创建文件/etc/my.cnf:[mysql_cluster]ndb-connectstring = 192.168.56.100启动每个数据节点:ndbd在数据节点的系统防火墙中打开端口2202:firewall-cmd --zone=public --permanent --add-port=2202/tcpfirewall-cmd --reload使用以下命令在托管API节点的系统上创建/etc/my.cnf:[mysqld]ndbclusterdefault-storage-engine = ndbcluster[mysql_cluster]ndb-connectstring = 192.168.56.100启动MySQL服务器作为API节点:mysqld_safe &检索安装MySQL服务器时创建的root帐户的临时密码。 它记录在/root/.mysql_secret中:cat /root/.mysql_secret使用mysqladmin为root帐户设置新密码。 提示输入当前密码时,请输入上一步中标识的密码:mysqladmin -u root -p password在API节点系统的防火墙中打开端口3306:firewall-cmd --zone=public --permanent --add-service=mysqlfirewall-cmd --reload使用托管管理节点的系统上的ndb_mgm客户端验证集群的状态:ndb_mgm -e SHOW

工作原理

本文教您如何使用两个数据节点设置MySQL集群数据库:一个API节点和一个管理节点。 管理节点由ndb_mgmdprocess组成,该处理器向其他节点提供配置信息并对其进行监视。 在数据节点上,ndbd进程处理群集数据的存储,分区和复制。 知道管理节点和数据节点的MySQL服务器充当API节点,用户可以通过该节点使用集群数据库。

Oracle维护的存储库中可用的软件包是在不支持网络数据库(NDB)的情况下构建的,因此我们首先从MySQL网站下载了一个存档,该存档包含将安装支持NDB /集群的MySQL版本的软件包:

curl -L dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL- Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar | tar x

MySQL抽象了数据的物理组织和操作细节,并将其委托给各种存储引擎。 不同的引擎具有不同的能力。 由于NDB引擎是实现集群的引擎,因此我们需要一个支持引擎的构建。 而不是像我们在其他配方中那样将curl的输出写入文件,这次我们使用x参数将输出直接传递给tar,以便动态扩展存档。

之后,我们从CentOS存储库安装了perl-Data-Dumper软件包,并将已安装的mariadb-libs软件包替换为每个系统上刚刚下载的MySQL-Cluster-shared软件包:

yum install perl-Data-Dumper MySQL-Cluster-shared-gpl-*.rpmyum erase mariadb-libs

MySQL-Cluster-shared软件包提供其他程序使用的共享库来使用MySQL。默认情况下,这些库取代了从CentOS存储库安装的MariaDB版本,使我们免于遇到会阻止干净安装的库冲突。由于之后不再需要它,我们卸载了mariadb-libspackage。

Yum在安装MySQL-Cluster-server软件包之后执行的一些安装后步骤是在Perl中编写的,并使用Perl的Data :: Dumper模块。这使得Perl-Data-Dumper包成为MySQL-Cluster-server包的依赖项。但是,一个错误导致Yum错过了这个,所以我们自己安装了这个包,以便MySQL-Cluster-server软件包的安装顺利进行。它不会阻止软件包的安装,但它需要我们手动完成一些额外的配置步骤。

有了这些要求,我们就在每个系统上安装了MySQL-Cluster-server和MySQL-Cluster-client软件包:

yum install MySQL-Cluster-{server,client}-gpl-*.rpm

整个集群的配置几乎集中在/var/lib/mysql-cluster/config.ini中的管理节点。 该文件分为几个部分,第一部分是[ndb default],它提供了应该用于集群的默认配置值。 这里的值适用于集群的每个节点,除非在相应节点的配置部分中被更具体的指令覆盖:

[ndbd default]NoOfReplicas = 2DataMemory = 100MIndexMemory = 10MServerPort = 2202

NoOfReplicas选项设置群集中的副本数。它的值可以设置为1或2,尽管2是推荐值。回想一下,不仅跨数据节点对集群数据库进行了分区,而且还对其进行了复制;每个节点通常承载一个分区,通常是数据库大小的1 / n(其中n是数据节点的数量),也是其他节点的副本。如果系统脱机,群集仍然可以正常运行,因为其数据在副本中仍然可用。 NoOfReplicas的值为1意味着只有一个数据库副本(没有副本),并且数据库的可用性取决于所有数据节点都在运行。

数据节点将其数据库的工作副本保存在RAM中,以减少延迟,同时定期将数据同步到磁盘。 DataMemory选项指定节点应为数据保留多少RAM,IndexMemory指定应为主键和唯一索引保留多少内存。无论您提供什么值,请确保有足够的资源可以避免RAM交换。

ServerPort选项指定节点将用于彼此通信的端口号。默认情况下,MySQL会动态分配端口,以便更容易在同一系统上运行多个节点,但由于此配方在其自己的主机系统上运行每个节点,我们需要知道端口以允许通过防火墙的流量,我们指定了我们自己。

配置中的后续部分使用hostname选项指定管理节点(通过[ndb_mgmtd]部分),API节点([mysqld]部分)和数据节点([ndbd]部分)的地址正在跑步。如多个[ndbd]部分所示,如果在集群中运行该类型的多个节点,则会出现相同类型的多个部分:

[ndb_mgmd]hostname = 192.168.56.100[mysqld]hostname = 192.168.56.101[ndbd]hostname = 192.168.56.102[ndbd]hostname = 192.168.56.103

在其余系统上,/etc/my.cnf被创建为数据节点和API节点使用的配置文件。 每个包含一个[mysql_cluster]部分,它提供了ndb-connectionstring选项:

[mysql_cluster]ndb-connectstring = 192.168.56.100

ndb-connectstring选项指定承载管理节点的系统的地址。 当数据和API节点联机时,它们与管理器通信以接收其配置信息。 如果您的群集有多个管理节点,则可以在用逗号分隔的连接字符串中列出其他节点:

ndb-connectstring = "192.168.56.100,192.168.56.105,192.168.56.106"

此外,API节点的配置包括[mysqld]部分。 它包括用于启用NDB引擎的ndbcluster选项和default-storage-engine选项,指示MySQL使用NDB来管理所有新表,除非在表的CREATE TABLE语句中另有指定:

[mysqld]ndbclusterdefault-storage-engine = ndbcluster

当用户或进程使用CREATE TABLE语句创建新表时,他们可以使用ENGINE指令指定应使用哪些MySQL存储引擎来管理其数据,例如:

CREATE TABLE users ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY, first_name VARCHAR(50) NOT NULL DEFAULT '', last_name VARCHAR(50) NOT NULL DEFAULT '')ENGINE = NDBCluster;

默认引擎是InnoDB引擎。 但是,只有NDB管理的表中的数据才能进入群集。 如果表由另一个引擎管理,则数据驻留在API节点上本地,并且不可用于群集中的其他节点。 为了防止意外问题和这可能导致的任何混淆,我们更改了默认引擎,以便在未提供ENGINE指令时表将使用NDB引擎。

启动MySQL集群时启动节点的顺序很重要,因为一个节点可能依赖于其他节点。 首先启动管理节点,然后启动数据节点,然后启动API节点。

API节点上MySQL的root帐户的密码是在第一次启动服务器时随机生成的,并写入/root/.mysql_secret文件,就像我们在设置MySQL数据库配方时使用mysqladmin更改它一样:

cat /root/.mysql_secretmysqladmin -u root -p password

发送到管理节点系统上的ndb_mgm客户端的SHOW命令允许我们查看集群的状态,并确保一切正常运行。 可以在交互模式下调用客户端,也可以使用-e参数直接将命令传递给它:

ndb_mgm -e SHOW

bd98831c9a8f067aa8cdcd4cd2e830b7.png

可以使用ndb_mgm客户端查看MySQL集群的状态

See also

Refer to the following resources for more information on working with MySQL clusters:

MySQL Reference Manual: MySQL Cluster Core Concepts (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-basics.html)

MySQL Reference Manual: MySQL Cluster Installation (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-installation.html)

MySQL Reference Manual: MySQL Cluster Nodes, Node Groups, Replicas, and Partitions (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-nodes-groups.html)

MySQL Reference Manual: Online Backup of MySQL Cluster (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup.html)

Set Up a MySQL Cluster the Easy Way (http://youtube.com/watch?v=64jtbkuPtvc)

High Availability MySQL Cookbook by Alex Davies (https://www.packtpub.com/big-data-and-business-intelligence/high-availability-mysql-cookbook)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_822376.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十款常用电脑 软件/网站 分享

1. 本地文档检索:Everything 我不允许还有人不知道Everything!!! 本地检索,小巧易用 文档丢在了哪里?who care?检索就完事了~ 2. 电脑屏幕录制:OBS Studio 经常看直播的朋友或许…

有什么网站下载 消防编程软件_妙小程AI编程课安卓版下载-妙小程AI编程课软件下载...

妙小程AI编程课,一个可以为你提供各种的编程知识的手机软件。该app采用了卡通的界面,以此引起孩子对于学习编程的兴趣,另外这里还有不少专家教授质制作的网课 学习视频,让孩子可以在任何地方、任意地点进行便捷学习。软件亮点妙小…

python模拟登录网站_PYTHON模拟登陆网页方法总结

原标题:PYTHON模拟登陆网页方法总结 由于工作中涉及到模拟登陆网页任务,查阅相关资料后总结得出,目前Python中常用的模拟登陆网页方法共有4种: 1、直接使用已知的cookie访问; 2、模拟登录后再携带得到的cookie访问&…

弟子规python编程游戏_学习Python编程学累了?来试试这些游戏编程网站

给大家分享几个趣味游戏网站,边敲代码边学习Python编程~1.Cyber-dojo网站: http://www.cyber-dojo.org/2.Playcodemonkey网站: https://www.playcodemonkey.com/3.Elevatorsaga网站: http://play.elevatorsaga.com/4.Git-game网站…

怎么查看服务器硬盘有几块多大,centos7如何查看磁盘空间有多大_网站服务器运行维护...

docker import后运行不起来_网站服务器运行维护docker import后运行不起来是因为import/export之后镜像的原来的参数都丢失了导致的,我们在启动docker时指定工作目录和开放的端口即可成功启动docker。执行命令:df -hl显示:文件系统 容量 已用…

菜鸟如何使用阿里云搭建服务器网站【阿里云、宝塔、thinkPHP、PHPstrom、Linux】①...

我们的流程: ①在阿里云免费领取一个月的服务器,推荐使用支付宝账号登录、因为这样你就可以免除实名认证这个环节了。 ②配置我们服务器的系统,其实云服务器也就是一个虚拟机,想要运行还是需要一个操作系统的、这里推荐使用LInux【…

html seo 标题图片,标题:生成静态HTML文件的seo命名技巧

标题:生成静态HTML文件的seo命名技巧(2013-06-05 09:52:27)正文:1,文件夹的深度对SEO应该会有影响吧?2,文件夹(文件)多了是否会访问系统变慢,且难于管理?如果是小型网站,或者分类比较少的话,就可…

PHP购物网站

我使用的phpsteam经常用着用着就闪退,所以做起来挺麻烦的。里面的代码有抄袭借鉴网上的代码,就是那个php做购物网站点击量最高的那个。 但是我很多代码也是自己写的不和其相同。 PHP是一门选修课,大学生上课大家都懂,代码有些方面…

windows 变网站服务器,windows+IIS6安装及搭建网站服务器环境教程

一、安装IIS1、如系统中还未安装IIS服务器,可打开“控制面板”,然后单击启动 “添加/删除程序”, 在弹出的对话框中选择 “添加/删除Windows组件”,在Windows组件向导对话框中选中“Internet信息服务(IIS)”,然后单击“…

程序员一些实用的网站收藏

程序员一些实用的网站收藏 1. 面试 两个网站 1.1牛客网 牛客网 https://www.nowcoder.com/ 1.2力扣 力扣 https://leetcode-cn.com/ 2 查资料的网站(包含在线工具) 2.1 程序员的工具箱 程序员的工具箱 https://tool.lu/ 2.2 菜鸟教程 菜鸟教…

nodejs后端 转 php,PHP+NodeJs后端给网站截图

有些导航站提交网站后会把网站截图并且在详情页会附带网页截图,例如这个 博客大全:blogwe.com挺好奇怎么实现的,所以了解到了这两个开源项目:Puppeteer 和 PuPHPeteer注意:需要安装 NodeJs 8 的版本设置 NodeJs 镜像(如…

在桌面点击html文档跳转到指定网站

在windows桌面新建一个html文档&#xff0c;然后文档内容如下&#xff1a; <script language"javascript">location.replace("https://www.baidu.com"); </script> 然后点击百度.html&#xff0c;就会打开浏览器并跳转到百度。

C++] WAP GPRS 向WWW网站 提交POST GET 数据 实例

代码 ///接收程序ASP<%numrequest("num")passrequest("pass")setfsserver.CreateObject("Scripting.FileSystemObject")setfilefs.OpenTextFile(server.MapPath("http.txt"),8,True)file.writeline num"---""-"…

SEO图片测试,alt=ddd title= 就不显示alt 内容

转载于:https://www.cnblogs.com/avatar/archive/2011/07/14/2106614.html

使用HTML5,CSS3和jQuery增强网站用户体验

记 得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验&#xff1f; 是不是立刻就想到了flash实现&#xff1f;这彷佛年代久远的事了。使用现在最流行的web技术 HTML5&#xff0c;CSS3和jQuery&#xff0c;同样也可以实现类似的用户体验。而且使用这些特性将会比…

2011年回顾:改变游戏的20个HTML5网站

今年HTML5确实给我们带来了很大的冲击。HTML5 Doctors&#xff0c;Oli Studholme评选出了20个最佳网站&#xff0c;它们涵盖了语义、音频、客户端web apps、canvas以及SVG和WebGL&#xff0c;这些网站预示了未来web的发展方向。 对HTML5和web来说&#xff0c;今年是收获丰富的一…

如何获取网站服务器运行状态

在学习的过程中总要经历一些痛苦的过程才能达到想要达到的地方。前几天牛人给我出了一道题&#xff0c;说是让我写一段程序判断一个网站的服务器是否正常运行。本着我自己先仔细研究实在不行再问的原则我各种郁闷了好几天。 各种没头绪&#xff0c;虽然磕磕绊绊的找到了一个网址…

Myeclipse+Tomcat运行网站

1、新建网站项目 2、在Myeclipse中设置Tomcat路径 window-->preferences&#xff0c;在左侧的输入框中输入tomcat&#xff0c;回车。 3、运行项目 右键单击刚刚创建的项目 4、在浏览器中输入URL http://localhost:8080/FirstWebTest/ 即可见到刚刚创建的网页。

收藏网站制作常用经典ajax.prototype.javascript实例打包下载

ajax.prototype.javascript实例打包下载..不错不错&#xff0c;都是我喜欢的~。 保存在这里拉~。大家喜欢可以拿去下载。 点击下载&#xff1a;5右拖动--多选框控制显示和不显示列.rar 点击下载&#xff1a;ajax-FileUpload.rar 点击下载&#xff1a;ajax-tab.rar 点击下载&…

使用recon/domains-hosts/baidu_site模块,枚举baidu网站的子域

使用recon/domains-hosts/baidu_site模块&#xff0c;枚举baidu网站的子域 【实例3-1】使用recon/domains-hosts/baidu_site模块&#xff0c;枚举baidu网站的子域。具体操作步骤如下所示&#xff1a;本文选自Kail Linux渗透测试实训手册 &#xff08;1&#xff09;使用recon/do…