linux 下搭建mysql-cluster集群环境
目标
在多台centos7 x64机器上部署mysql-cluster服务,实现基于ndbcluster引擎的mysql集群服务
环境
-
三台安装了centos7 x64系统的服务器(基本处于裸机状态),IP分别为192.168.1.2、192.168.1.3、192.168.1.4。
各个机器功能如下:
192.168.1.2:mgm节点
192.168.1.3:sql节点+data节点
192.168.1.4:sql节点+data节点 -
从mysql官网下载的mysql-cluster压缩包:mysql-cluster-gpl-7.4.9-linux-glibc2.5-x86_64.tar.gz 附上下载地址:https://dev.mysql.com/downloads/cluster/ 我使用的是7.4.9版本,官方目前最新的是7.5.7,差别应该不大。
3.此环境使用的root用户进行的搭建
开始搭建
- 步骤1
将mysql-cluster-gpl-7.4.9-linux-glibc2.5-x86_64.tar.gz上传到三个机器,并解压。解压完成后,修改路径,保证所有的文件位于/usr/mysql-cluster
下(此路径在配置文件中会用到) - 步骤2
将config.ini
文件复制到192.168.1.2
的/usr/mysql-cluster
下,config.ini
文件内容如下:
[ndbd default]
NoOfReplicas=2
MaxNoOfTables=1024
MaxNoOfUniqueHashIndexes=1024
MaxNoOfOrderedIndexes=1024
MaxNoOfAttributes=10000
[ndb_mgmd]
HostName=192.168.1.2
DataDir=/usr/mysql-cluster/data
[ndbd]
HostName=192.168.1.3
DataDir=/usr/mysql-cluster/data
[ndbd]
HostName=192.168.1.4
DataDir=/usr/mysql-cluster/data
[mysqld]
HostName=192.168.1.3
[mysqld]
HostName=192.168.1.4
此时就可以启动mgm
节点了,启动命令如下:
bin/ndb_mgmd --config-file=/usr/mysql-cluster/config.ini --configdir=/usr/mysql-cluster
之后查看mgm节点状态,命令如下:
bin/ndb_mgm -e show
步骤3
注意:此步骤需要在192.168.1.3
和192.168.1.4
分别执行一次。
先上传m.cnf配置文件到/usr/mysql-cluster
下,其内容如下,其中user=root
配置仅当mysql需要运行在root用户下时才需要配置:
[mysqld]
character_set_server=utf8
basedir=/usr/mysql-cluster
datadir=/usr/mysql-cluster/data
ndbcluster
ndb-connectstring=192.168.1.2
user=root
[mysql_cluster]
ndb-connectstring=192.168.1.2
然后初始化mysql:
scripts/mysql_install_db --basedir=/usr/mysql-cluster --datadir=/usr/mysql-cluster/data
最后启动data节点和sql节点(注意必须先启动两台机器上的data节点,然后再启动sql节点,因为sql节点启动时需要依赖所有的data节点)。
启动data节点命令:bin/ndbd --defaults-file=my.cnf --initial
注意,仅仅第一次启动data节点时需要附带–initial参数,以后就不需要了。
启动sql节点命令:bin/mysqld_safe --defaults-file=my.cnf &
之后可在mgm节点即192.168.1.2机器上使用bin/ndb_mgm -e show
命令查看到各个节点的连接顺序
最后,如果需要停止各个整个集群系统,只需要在192.168.1.2机器上执行bin/ndb_mgm -e shutdown
命令即可。然后在各个节点上可以看到ndbd进程已经终止了(mysqld进程并不会终止,因为mysqld进程也可以作为非集群服务存在,也就说各个sql节点是可以作为普通的mysql服务被调用的)
可能遇到的问题
- 提示
libaio.so.1
这个库不存在,只要执行yum install libaio.so*
命令安装所需的库即可 - 提示
Data::Dumper
模块不存在,只要执行yum install perl-Data-Dumper
命令安装所需库即可。
最后
- 整个集群启动的顺序是mgm –> 所有的data节点 –>所有的sql节点。
- 所有的sql节点是等效的,连接到任何一个都可以访问到所有的数据。
- 当某个data节点挂掉后,整个集群服务扔可正常运行,当data节点启动后,其数据会被自动同步。
- 所有的sql节点,各自的用户名/密码是独立的,且初始密码需要用户手动设置。
- 新建的表必须使用ndbcluster引擎才能使用到集群这个功能,否则与普通的mysql没区别。