乐趣区

如何搭建一个MySQL分布式集群

1、准备集群搭建环境
使用 6 台虚拟机来搭建 MySQL 分布式集群,相应的实验环境与对应的 MySQL 节点之间的对应关系如下图所示:

管理节点(MGM):这类节点的作用是管理 MySQLCluster 内的其他节点,如提供配置数据,并停止节点,运行备份等。由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类节点。MGM 节点是用命令“ndb_mgmd”启动的;
数据节点(NDB):这类节点用于保存 Cluster 的数据,数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有 4 个数据节点,没有必要设定过多的副本,在 NDB 中数据会尽量的保存在内存中。数据节点使用命令“ndb”启动的;
SQL 节点:这是用来访问 Cluster 数据的节点,对于 MySQL Cluster,客户端节点是使用 NDB Cluster 存储引擎的传统 MySQL 服务器。通常,SQL 节点使用命令“mysqld-ndbcluster”启动的;
2、准备安装包
在官网上下载 mysql 的安装包: mysql-cluster-gpl-7.4.11-Linux-glibc2.5-x86_64.tar.gz,并进行解压。
3、集群搭建流程
1] 将上述安装包解压出来的文件都移到 /usr/local/mysql 下;
2] 运行 script 目录下的 mysql-install-db.sh 脚本,运行命令为./mysql-install-db.sh –user=root–basedir =/usr/local/mysql –datadir=/usr/local/mysql;注意其中用户为 root 的名称需要跟配置文件 my.cnf 中的相同;
在管理节点,数据节点,SQL 节点上都执行上述安装命令,从而完成对 mysql 的安装;
4、集群配置与启动
1] 在管理节点上需要完成对于集群整体的配置配置:在 /var/lib/mysql-cluster/config.ini 中实现如下的配置信息:

2] 在数据节点中需要在 my.cnf 中完成对于数据节点的相关配置信息,如下:

需要指明配置的数据节点的根目录,数据目录,socket 连接配置,用户配置,以及对应的管理节点的 ip 地址配置;将配置完成的配置文件移动到 /etc/my.cnf,完成;
3] 在 SQL 节点上完成对于 SQL 节点的配置信息,同样的是在 my.cnf 中完成相应配置信息,并将配置文件移动到 /etc/my.cnf 中,相应的配置信息的设定如下所示:

完成以上配置后,就可以启动集群中的各个节点了。
5、集群启动
在启动 mysql 集群的时候,注意首先要启动管理节点,并依次启动其他等若干个节点,相应的启动步骤如下:
1] 在管理节点上,切换到 /usr/local/mysql/bin 目录下,执行 ndb_mgmd -f /var/lib/mysql-cluster/config.ini 命令,完成管理节点的启动;
2] 在各个数据节点上,切换到 /usr/local/mysql/bin 目录下,执行 ndbd –initial(第一次启动时,否则执行 ndbd 即可),完成对数据节点的启动;
3] 在各个 SQL 节点上,同样切换到 /usr/local/mysql/bin 目录下,执行 mysqld_safe –user=root 完成启动;
4] 在管理节点上运行 ndb_mgm 命令,进入数据库管理的客户端,输入 show 命令,查看与之相连接的各个节点的状态;
5] 在 SQL 节点上分别进入系统的安全状态,并完成对 root 用户的密码修改,运行以下指令,进行密码修改:
A use mysql,切换到 mysql 数据库;
B UPDATE user SET Password = PASSWORD(‘123456’)WHERE user = ‘root’; 从而实现对 root 密码的修改;
C flush privilege,完成修改;
6] 修改使得任意主机都能连得上 mysql,进行如下修改,同样安装第 5 步进入安全模式,并完成相应的修改,如下:
grant all on‘*.*’to‘root@’%’ identified by ‘123456’;

这样就可以使得任意一个主机都可以通过 root 用户来登录 mysql 了;
6、集群测试
在集群上的一个 SQL 节点上执行创建数据库,并创建一张表,并完成相应的数据插入,如下:
A create database ctest;// 创建数据库

B create table test(

id int primarykey;// 创建一张表

);

C insert into test (id)values(1); // 完成数据插入

登录另外一个 SQL 节点,并执行 SQL 查询操作,看数据库中是否已经有数据,如下:
select * from ctest;

如果有数据,表示数据插入成功;
7、关闭集群
1] 首先关闭管理节点和数据节点,需要在管理节点上执行命令,如下:./ndb_mgm -e shutdown;
2] 然后关闭 SQL 节点,在 SQL 节点上执行命令 /usr/local/mysql/support-fies/mysql.server stop(其中 /usr/local/mysql/ 是 mysql 的安装目录). 从而关闭 SQL 节点;

退出移动版