MySQL NDB Cluster安装过程Step by Step

1. 安装说明

由于碰到一套MySQL NDB Cluster,这里记录一下测试环境的安装过程,以便进行相关测试。
安装包:mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz
安装环境:RHEL 5.8 x86_64
192.168.187.43
192.168.187.44

      +--------------------------------------------+
      | node	            ip and port            |
      +--------------------------------------------+
      | manage node(1)	    192.168.187.43         |
      | SQL node(2)	    192.168.187.43:3331    |
      |                     192.168.187.44:3331    |
      | data node(2)	    192.168.187.43:3306    |
      |                     192.168.187.44:3306    |
      +--------------------------------------------+
               Table 1: 节点配置说明

2. 安装准备

使用以下命令卸载MySQL相关包
# yum remove mysql*

检查/etc/my.cnf是否删除了

3. 安装数据节点和SQL节点

3.1 创建用户

groupadd mysql
useradd -g mysql -d /home/mysql -m mysql

3.2 安装介质

# cd /tmp
# tar xvf mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64.tar.gz -C /usr/local
# cd /usr/local
# chown -R mysql:mysql mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64
# ln -s mysql-cluster-gpl-7.3.6-linux-glibc2.5-x86_64 mysql

3.3 初始化

# cd /data
# mkdir mysqldata
# chown mysql:mysql mysqldata

准备/etc/my.cnf文件

# vi /etc/my.cnf
[mysqld]
basedir         = /usr/local/mysql/
datadir         = /data/mysqldata
user            = mysql
log-error       = /data/mysqldata/mysqld.err

[client]
port    =3306
socket  =/tmp/mysql.sock

创建数据库

# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata

3.4 设置MySQL开机自启动

# cp support-files/mysql.server /etc/init.d/mysqld

# vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysqldata

3.5 启动MySQL

# service mysqld start

3.6 修改root口令

/usr/local/mysql/bin/mysqladmin -u root password ‘123456’

这六步,在两台主机上都执行一次,数据节点和SQL节点就算安装好了。

4. 安装管理节点

管理节点的安装更简单,只要在43服务器上复制些文件出来就行了。
虽然只有一步,便这一步在目前环境下(管理节点和SQL节点在同一台服务器上)也不是必需的。

# cd /usr/local/mysql
# cp bin/ndb_mgm* /usr/local/bin
# cd /usr/local/bin
# chmod +x ndb_mgm*
# ls -l
总计 22772
-rwxr-xr-x 1 root root  7140138 01-04 10:09 ndb_mgm
-rwxr-xr-x 1 root root 16138279 01-04 10:09 ndb_mgmd

管理节点只要ndb_mgm和ndb_mgmd两个文件和一个配置文件即可,因此把这三个文件复制到那里,那里就是管理节点了。
ndb_mgmd是mysql cluster管理服务器,ndb_mgm是客户端管理工具,等一下会用到它们的。
到目前为止两个SQL节点两个数据节点和一个管理节点都安装完成了,但是还不能工作,得进行配置,把这几个节点联系在一起协同工作。

5. 配置

5.1 配置数据节点和SQL节点

只要在/etc/my.cnf结尾加上以下几行就将这个mysql服务器变成了一个数据节点和SQL节点。

ndbcluster                         #运行NDB存储引擎
ndb-connectstring=192.168.187.43   #指定管理节点  以上两行声明其为SQL节点

[mysql_cluster]
ndb-connectstring=192.168.187.43   #指定管理节点  以上两行声明其为数据节点

注意两台服务器都得这样配置。配置完的/etc/my.cnf文件如下:

# cat /etc/my.cnf
[mysqld]
basedir         = /usr/local/mysql/
datadir         = /data/mysqldata
user            = mysql
log-error       = /data/mysqldata/mysqld.err
ndbcluster                         #运行NDB存储引擎
ndb-connectstring=192.168.187.43   #指定管理节点  以上两行声明其为SQL节点

[mysql_cluster]
ndb-connectstring=192.168.187.43   #指定管理节点  以上两行声明其为数据节点

[client]
port    = 3306
socket  = /tmp/mysql.sock

5.2 配置管理节点

管理节点的配置复杂一点,在管理服务器43的/home/mysql/mysql-cluster/目录中创建config.ini文件。

$ mkdir /home/mysql/mysql-cluster/
$ cd /home/mysql/mysql-cluster/
$ vi config.ini

在config.ini文件中添加以下内容:

[NDBD DEFAULT]
NoOfReplicas=1
DataMemory=500M
IndexMemory=300M                  

[TCP DEFAULT]
portnumber=2202                   

[NDB_MGMD]
hostname=192.168.187.43
datadir=/home/mysql/mysql-cluster/   

[NDBD]
hostname=192.168.187.43
datadir=/data/mysqldata/          

[NDBD]
hostname=192.168.187.44
datadir=/data/mysqldata/

[MYSQLD]
hostname=192.168.187.43

[MYSQLD]
hostname=192.168.187.44

解释如下:

[NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDB_MGMD]: 表示管理节点的配置,只有一个。
[NDBD]: 表示每个数据节点的配置,可以有多个。
[MYSQLD]: 表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址,也可以什么都不写,
只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数。

6. 启动

6.1 启动管理节点

mysql cluster 需要各个节点都进行启动后才可以工作,节点的启动顺序为管理节点->数据节点->SQL节点。
首先启动管理节点

# cd /usr/local/bin
# ./ndb_mgmd -f /home/mysql/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.6.19 ndb-7.3.6
2017-01-04 10:22:44 [MgmtSrvr] WARNING  -- at line 7: [TCP] portnumber is deprecated

命令行中的ndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。
如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上–initial参数,
不然添加的节点不会作用在mysql cluster中。

./ndb_mgmd -f /home/mysql/mysql-cluster/config.ini –initial

启动时可能会报个WARNING,如WARNING — at line 7: [TCP] portnumber is deprecated,这个不用管。可以正常工作的。

6.2 启动数据节点

安装后第一次启动数据节点时要加上–initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时。

# cd /usr/local/mysql
# bin/ndbd --initial
2017-01-04 10:26:58 [ndbd] INFO     -- Angel connected to '192.168.187.43:1186'
2017-01-04 10:26:58 [ndbd] INFO     -- Angel allocated nodeid: 2

另一个节点启动

# bin/ndbd --initial
2017-01-04 10:27:38 [ndbd] INFO     -- Angel connected to '192.168.187.43:1186'
2017-01-04 10:27:38 [ndbd] INFO     -- Angel allocated nodeid: 3

6.3 启动SQL节点

# service mysqld start

6.4 客户端管理

# cd /usr/local/bin
# ./ndb_mgm
这时就进入到客户端,可以对mysql cluster进行各项操作,进入后会有ndb_mgm > 提示符出现,
首先来查看各节点的连接情况,在ndb_mgm> 提示符下输入show:

# ./ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.187.43:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.187.43  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 0, *)
id=3    @192.168.187.44  (mysql-5.6.19 ndb-7.3.6, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.187.43  (mysql-5.6.19 ndb-7.3.6)

[mysqld(API)]   2 node(s)
id=4    @192.168.187.43  (mysql-5.6.19 ndb-7.3.6)
id=5    @192.168.187.44  (mysql-5.6.19 ndb-7.3.6)

可以看到各个节点已经连接上了,至此,mysql cluster配置完成。

6.5 关闭集群

mysql cluster的关闭也很简单,只需在ndb_mgm> 提示符下输入 shutdown即可,
这时会显示各节点的关闭信息,再输入exit即可退出ndb_mgm管理,回到shell中。
虽然mysql cluster 关闭了,但是SQL节点的mysql服务并不会停止的。

7. 相关进程

管理节点进程

# ps -ef | grep ndb_mgmd
root      6663     1  0 10:22 ?        00:00:00 ./ndb_mgmd -f /home/mysql/mysql-cluster/config.ini
root      7103  6710  0 10:32 pts/5    00:00:00 grep ndb_mgmd

数据节点进程

# ps -ef | grep ndbd
root      6774     1  0 10:26 ?        00:00:00 bin/ndbd --initial
root      6775  6774  0 10:26 ?        00:00:03 bin/ndbd --initial

SQL节点进程

# ps -ef | grep mysqld
root      6847     1  0 10:28 pts/5    00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/data/mysqldata --pid-file=/data/mysqldata/test3.pid
mysql     7022  6847  0 10:28 pts/5    00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysqldata --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysqldata/mysqld.err --pid-file=/data/mysqldata/test3.pid

.管理节点。
顾名思义,管理节点用来对其他节点进行管理。实际操作中,是通过一个叫作config.ini的配置文件进行维护而起到管理作用。
该文件可以用来配置有多少需要维护的副本,需要在每个数据结点上为数据和索引分配多少内在,数据节点的位置,在每个节点上保存数据的磁盘位置,
sql节点的位置信息。管理节点只能有一个,配置要求不高。

.sql节点
sql 节点可以理解为应用和数据节点之间的一个桥梁。应用不能直接访问数据节点,只能先访问sql节点,然后sql节点再去访问数据结点来返回数据。
Cluster中可以有多个sql节点,通过每个sql节点查询到的数据都是一致的,通常来说,sql节点越多,分配到每个sql节点的负载就越小,系统的整体性能就越好。

.数据节点
用来存放Cluster里面的数据,可以有多个数据节点。每个数据结点可以有多个镜像节点。任何一个数据节点发生故障,
只要它的镜像节点正常,Cluster就可以正常运行。

8. 其它

8.1 在管理节点上面备份数据到现有的数据节点

/usr/local/bin/ndbd_mgm -e “start backup”

8.2 关闭现有的数据节点

/usr/local/mysql/ndb_mgm -e “shutdown”

8.3 关闭SQL节点

service mysqld stop

8.4 按照顺序启动所有节点

1)、管理节点。
2)、数据节点,要带初始化选项 –initial。
3)、启动SQL节点。
4)、恢复数据。

关于紫砂壶

感悟技术人生
此条目发表在MySQL分类目录,贴了标签。将固定链接加入收藏夹。

2 则回应给 MySQL NDB Cluster安装过程Step by Step

  1. 匿名说:

    非常好,学习了,

评论已关闭。