一、安装前规划

1、安装软件版本:mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz

2、安装规划:

主机名

Ip地址

角色

db01

192.168.100.131

管理节点

db02

192.168.100.132

SQL节点

db03

192.168.100.133

SQL节点

db04

192.168.100.134

data节点

db05

192.168.100.135

data节点

3、配置/etc/hosts文件(所有节点):

192.168.100.231         db01

192.168.100.232         db02

192.168.100.233         db03

192.168.100.234         db04

192.168.100.235         db05

二、安装NDB Cluster

1、SQL节点安装:

在每一个被指定为SQL节点的主机上,使用root用户执行以下步骤:

1)检查你的操作系统上是否已经创建了mysql组及mysql用户,一些操作系统在安装时会预创建mysql组及mysql用户,如果你的操作系统上没有创建这些,那么通过如下步骤创建mysql组及mysql用户。

shell> groupadd mysql

shell> useradd -g mysql -s /bin/false mysql

2)在本地操作系统下载mysql软件目录中,解压安装软件,并移动到/usr/local/目录下,根据需要是否使用软连接(ln -s)。

shell> cd /mnt

shell> tar -C /usr/local -xzvf mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz

shell> ln -s /usr/local/mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64 /usr/local/mysql

3)进入到本地的mysql安装目录,并且通过mysqld --initialize命令初始化mysql系统数据库。

shell> cd mysql

shell> mysqld --initialize

当然,你也可以进入mysql安装目录,通过mysql_install_db命令初始化mysql系统数据库。

shell> cd mysql

shell> scripts/mysql_install_db --user=mysql

然而,这种方式是不推荐使用的,因为mysql_install_db将被弃用在以后的版本中。

4)为mysql服务器和data目录设置必要的权限。

shell> chown -R root .

shell> chown -R mysql data

shell> chgrp -R mysql .

5)copy mysql启动脚本到/etc/rc.d/init.d/下,并且设置可执行文件,然后通过chkconfig命令添加为服务。

shell> cp support-files/mysql.server /etc/rc.d/init.d/

shell> chmod +x /etc/rc.d/init.d/mysql.server

shell> chkconfig --add mysql.server

记住,必须在每一台SQL节点上执行以上步骤。

2、data节点安装:

安装data节点不需要mysql二进制文件,仅需要在NDB cluster的data节点执行ndbd(single-treaded) or ndbmtd(multi-threaded),mysql二进制安装文件也包含在以上的tar包中。

以root用户登录操作系统,执行以下步骤安装data 节点在每一台data 节点服务器上。

1)进入到mysql下载目录下,并且抓取这个ndbd和ndbmtd二进制文件到/usr/local/bin/目录下,

shell> cd /mnt

shell> tar -zxvf mysql-5.7.17-ndb-7.5.6-linux-i686-glibc23.tar.gz

shell> cd mysql-5.7.17-ndb-7.5.6-linux-i686-glibc23

shell> cp bin/ndbd /usr/local/bin/ndbd

shell> cp bin/ndbmtd /usr/local/bin/ndbmtd

在ndbd和ndbdmtd已经复制到/usr/local/bin/下后,你也可以删除mysql解压目录和下载文件,并且这是非常安全的。

2)进入到/ust/local/bin/目录下,将步骤1 copy的ndbd和ndbmtd文件设置为可执行文件。

shell> cd /usr/local/bin

shell> chmod +x ndb*

执行以上这些步骤在每一台data节点服务器上。

3、Management 节点安装:

安装管理节点不需要mysql二进制文件,仅需要安装NDB cluster management server (ndb_mgmd),并且你可能还想安装management client (ndb_mgm),所有的这些都可以在tar包中发现。

以root用户身份登录操作系统,执行安装ndb_mgmdndb_mgm命令在management节点服务器上。

1)进入到mysql解压目录,抓取ndb_mgmd和ndb_mgm二进制文件copy到/usr/local/bin/目录下。

shell> cd /var/tmp

shell> tar -zxvf mysql-5.7.17-ndb-7.5.6-linux2.6-i686.tar.gz

shell> cd mysql-5.7.17-ndb-7.5.6-linux2.6-i686

shell> cp bin/ndb_mgm* /usr/local/bin

你也可以删除mysql解压目录和下载文件,并且这是非常安全的。

2)进入到/ust/local/bin/目录下,将步骤1 copy的ndb_mgmd和ndb_mgm文件设置为可执行文件。

shell> cd /usr/local/bin

shell> chmod +x ndb_mgm*

三、配置NDB Cluster

这里描述如何通过最小化配置部署一个NDB cluster集群。

说明:每一个data节点和SQL节点需要配置一个my.cnf文件,并且提供两个选项的说明:其中一个告诉哪里可以找到management节点;另一个告诉mysql 服务器这个主机是否启动NDB Cluster存储引擎。

管理节点需要配置一个congin.ini的配置文件,它描述了集群存在几个副本,在每一个节点为数据和索引各分配多少内存,数据节点在哪里,每一个数据节点中在磁盘的哪里保存数据,以及存在哪些SQL节点。

1、配置数据节点和SQL节点

数据节点和SQL节点在my.cnf文件所需要的配置相当简单,并且这个文件应该放在/etc/目录下,可以通过任何编辑器对其进行编辑,例如:

shell> vi /etc/my.cnf

每个数据节点和SQL节点配置可以参考如下内容:

[mysqld]

# Options for mysqld process:

ndbcluster                      # run NDB storage engine

[mysql_cluster]

# Options for NDB Cluster  processes:

ndb-connectstring=192.168.0.10  # location of management server

本例中每个sql节点和data节点/etc/my.cnf示例配置如下:

[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data/

user=mysql

log-error=/usr/local/mysql/data/sqlnode.err

ndbcluster

ndb-connectstring=db01

[mysql_cluster]

ndb-connectstring=db01

2、配置管理节点

配置管理节点的第一步是创建目录和创建配置文件本身(以root用户身份执行)。

shell> mkdir /var/lib/mysql-cluster

shell> cd /var/lib/mysql-cluster

shell> vi config.ini

管理节点的config.ini配置文件内容可能如下:

[ndbd default]

# Options affecting ndbd processes on all data nodes:

NoOfReplicas=2    # Number of replicas

DataMemory=80M    # How much memory to allocate for data storage

IndexMemory=18M   # How much memory to allocate for index storage

                  # For DataMemory and IndexMemory, we have used the

                  # default values. Since the "world" database takes up

                  # only about 500KB, this should be more than enough for

                  # this example Cluster setup.

[tcp default]

# TCP/IP options:

portnumber=2202   # This the default; however, you can use any

                  # port that is free for all the hosts in the cluster

                  # Note: It is recommended that you do not specify the port

                  # number at all and simply allow the default value to be used

                  # instead

[ndb_mgmd]

# Management process options:

hostname=192.168.0.10           # Hostname or IP address of MGM node

datadir=/var/lib/mysql-cluster  # Directory for MGM node log files

[ndbd]

# Options for data node "A":

                                # (one [ndbd] section per data node)

hostname=192.168.0.30           # Hostname or IP address

datadir=/usr/local/mysql/data   # Directory for this data node's data files

[ndbd]

# Options for data node "B":

hostname=192.168.0.40           # Hostname or IP address

datadir=/usr/local/mysql/data   # Directory for this data node's data files

[mysqld]

# SQL node options:

hostname=192.168.0.20           # Hostname or IP address

                                # (additional mysqld connections can be

                                # specified for this node for various

                                # purposes such as running ndb_restore)

本例中管理节点config.ini文件内容如下:

[ndbd default]

NoOfReplicas=1

DataMemory=100M

IndexMemory=80M

[tcp default]

portnumber=2202

[ndb_mgmd]

hostname=db01

datadir=/var/lib/mysql-cluster

[ndbd]

hostname=db04

datadir=/usr/local/mysql/data

[ndbd]

hostname=db05

datadir=/usr/local/mysql/data

[mysqld]

hostname=db02

[mysqld]

hostname=db03

说明:mysql cluster默认管理节点端口号是1186,;默认数据节点端口号是2202;然而,集群可以自动获得端口为哪些自由的数据节点。

四、启动集群

在成功配置后启动集群并不是很困难,每个解决节点必须分别被启动,首先启动管理节点,其次启动数据节点,最后再启动SQL节点。

1、在管理节点主机上,在shell中输入如下内容用于启动管理节点:

shell> ndb_mgmd -f /var/lib/mysql-cluster/config.ini

2、在每一个数据节点上,shell下运行ndbd命令用于启动数据节点:

shell> ndbd

3、在每一个sql节点上,通过mysql启动命令启动SQL节点:

shell>service mysqld start

如果一切顺利,集群可以正确启动,现在你可以进行一些测试操作。你可以使用管理节点客户端测试工具ndb_mgm,输出当前的集群配置信息及运行状态。

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)] 2 node(s)

id=2 @192.168.100.234  (mysql-5.6.34 ndb-7.4.13, Nodegroup: 0, *)

id=3 @192.168.100.235  (mysql-5.6.34 ndb-7.4.13, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.100.231  (mysql-5.6.34 ndb-7.4.13)

[mysqld(API)] 2 node(s)

id=4 @192.168.100.232  (mysql-5.6.34 ndb-7.4.13)

id=5 @192.168.100.233  (mysql-5.6.34 ndb-7.4.13)

五、关闭集群

想要关闭集群,在管理节点主机的shell下输入如下命令:

shell> ndb_mgm -e shutdown

这个-e命令可以安全的kill掉运行 ndb_mgm, ndb_mgmdndbd 或者 ndbmtd的进程。

如果想要关闭sql节点,应该使用mysql停止服务方法。