linux 下搭建mysql-cluster集群环境

目标

在多台centos7 x64机器上部署mysql-cluster服务,实现基于ndbcluster引擎的mysql集群服务

环境

  1. 三台安装了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节点

  2. 从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.3192.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没区别。
posted @ 2018-05-17 23:23  dion至君  阅读(1686)  评论(0编辑  收藏  举报