参考博文:centos65安装简测mysql cluster 7.3.7
1 设备信息
1.1 设备台数
服务器数量 2 台:172.16.112.28 和 172.16.112.29
1.2 服务器信息
CentOS release 6.8 (Final)
2 NDB Cluster安装
2.1 安装规划
整个 NDB Cluster 一共5个节点:
172.16.112.28 分别做一个数据节点,SQL节点,管理节点
172.16.112.29 分别做一个数据节点,SQL节点,管理节点
2.2 下载
Mysql Cluster下载地址
选择MySQL Cluster 7.4版本,因为该版本的 Mysql 版本为 5.6.42,可根据自身需要选择版本。
2.3 卸载老版本的Mysql
如果系统内已经有Mysql服务了,需要先卸载后再进行安装,否则会报错。
rpm -qa | grep mysql
mysql-libs-5.1.73-7.el6.x86_64
yum -y remove mysql-libs-5.1.73-7.el6.x86_64 #卸载命令
2.4 创建用户和组
groupadd mysql
useradd -r -g mysql mysql
id mysql
2.5 安装数据节点和Mysql节点
tar -zxvf mysql-cluster-gpl-7.4.22-linux-glibc2.12-x86_64.tar.gz
因为是绿色版的,所以解压就已经安装完成了。直接放至 /usr/local/mysql/ 目录下即可。
mv mysql-cluster-gpl-7.4.22-linux-glibc2.12-x86_64 /usr/local/mysql
给 mysql 系统权限
chown -R root:mysql /usr/local/mysql/
chown -R mysql /usr/local/mysql/data/
进入 mysql 目录下
cd /usr/local/mysql/
创建MySQL Server系统表
scripts/mysql_install_db --user=mysql
配置数据库服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
设置数据库为开机启动
chkconfig --add mysqld
配置Mysql文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
需要新增这些配置信息在 /etc/my.cnf 上
[mysql_cluster]
ndb-connectstring = 172.16.112.28 //172.16.112.28 为管理节点
[mysqld]
ndbcluster
双管理节点的为
[mysql_cluster]
ndb-connectstring=172.16.112.28,172.16.112.29
[mysqld]
ndbcluster
到这里数据节点和管理节点就完成了,两台服务器都需要配置
2.6 部署管理节点
管理节点只需要在一台服务器上部署就可以了,我们选择 .28 这台来部署。
讲 ndb_mgm ndb_mgmd 这两个文件移动到 /usr/local/bin 下
cp mysql/bin/ndb_mgm* /usr/local/bin
配置管理节点配置文件
mkdir /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/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
[tcp default]
# TCP/IP options:
[ndb_mgmd]
# Management process options:
hostname=172.16.112.28 # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node log files
NodeId=1
[ndbd]
# Options for data node-1:
# (one [ndbd] section per data node)
hostname=172.16.112.29 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
NodeId=2
[ndbd]
# Options for data node-2:
hostname=172.16.112.28 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's data files
NodeId=3
[mysqld]
# SQL node options:
hostname=172.16.112.28 # Hostname
[mysqld]
# SQL node options:
hostname=172.16.112.29 # Hostname
双管理节点 config.ini 配置文件如下
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
ServerPort=2202
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
LogDestination=SYSLOG:facility=local0;FILE:filename=/var/lib/mysql-cluster/log.log
[tcp default]
[ndb_mgmd]
NodeId=1
HostName=172.16.112.28
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
NodeId=2
HostName=172.16.112.29
DataDir=/var/lib/mysql-cluster
[ndbd]
NodeId=3
HostName=172.16.112.29
DataDir=/usr/local/mysql/data
[ndbd]
NodeId=4
HostName=172.16.112.28
DataDir=/usr/local/mysql/data
[mysqld]
NodeId=5
HostName=172.16.112.28
[mysqld]
NodeId=6
HostName=172.16.112.29
到这管理节点就配置完成了。
2.7 启动集群
启动循序应该为:管理节点->数据节点->SQL节点
单管理节点集群启动管理方法
更改 confg.ini 后或者第一次启动应该使用以下
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
普通启动不需要加 --initial 参数
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
双管理节点集群启动管理方法
在 .28 那台服务器启动方法
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
在 .29 那台服务器启动方法
ndb_mgmd -c 172.16.112.28 --ndb-nodeid=2 -f /var/lib/mysql-cluster/config.ini
这里的--ndb-nodeid 应该为本台服务器的地址在配置文件中的节点 id 标识号,而且两台服务器的配置文件应该一样。
启动数据节点
第一次需要加 --initial 参数,后续不需要
/usr/local/mysql/bin/ndbd --initial
两台服务器的数据节点都要启动
这里需要防火墙开放 1186 端口
vim /etc/sysconfig/iptables
添加下面的记录到 iptables 表中
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1186 -j ACCEPT
重启防火墙
service iptables restart
启动SQL 节点
/etc/init.d/mysqld start
可用下面的命令检查是否启动成功,有进程则说明启动成功
ps -ef | grep mysql
2.7 关闭集群
关闭顺序应该为:SQL节点->数据节点->管理节点
关闭SQL节点
/etc/init.d/mysqld stop
关闭管理节点和数据节点
ndb_mgm -e shutdown
使用以上命令可以关闭管理节点和数据节点
3 NDB Cluster 使用
ndb_mgm 命令登录数据库
ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 172.16.112.28:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @172.16.112.29 (mysql-5.6.42 ndb-7.4.22, Nodegroup: 0, *)
id=4 @172.16.112.28 (mysql-5.6.42 ndb-7.4.22, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.16.112.28 (mysql-5.6.42 ndb-7.4.22)
[mysqld(API)] 2 node(s)
id=5 @172.16.112.28 (mysql-5.6.42 ndb-7.4.22)
id=6 @172.16.112.29 (mysql-5.6.42 ndb-7.4.22)
ndb_mgm>
可以看到用 show 命令可以查看各个节点的信息
4 NDB Cluster 数据备份与恢复
4.1 数据备份
编辑配置文件
[ndbd default]
BackupDataDir=/data/mysql-cluster
在 [ndbd default] 项中加入备份目录,如果配置该项,备份目录默认为 /usr/local/mysql/data/BACKUP/
登录 ndb_mgm , 执行备份命令即可
start backup nowait
Node 3: Backup 1 started from node 1
Node 3: Backup 1 started from node 1 completed
StartGCP: 383 StopGCP: 386
#Records: 2060 #LogRecords: 0
Data: 52040 bytes Log: 0 bytes
这里需要记录备份 id ,如该次备份的 id = 1。
4.2 数据恢复
需要数据恢复时,启动数据节点应该带 --initial 参数,否则恢复会失败。
执行数据数据恢复命令
ndb_restore -b1 -n4 -m -r /data/mysql-cluster/BACKUP/BACKUP-1/
-b 备份id
-n NDB节点id
-m 恢复表定义
-r 备份路径
-c cluster管理节点连接
5 NDB Cluster常见问题
5.1 关于双管理节点集群有个管理节点连接不上的问题
- 可能是该管理节点没启动。
- 可能是服务器防火墙没开,请检查 /etc/sysconfig/iptables 文件是否开放了 1186端口
- 可能是两台服务器的 config.ini 配置文件不一样,请检查后做以下操作:
主服务器上
ndb_mgmd --skip-config-cache -f /var/lib/mysql-cluster/config.ini
另一台服务器上
ndb_mgmd -c 172.16.112.28 --skip-config-cache --ndb-nodeid=2 -f /var/lib/mysql-cluster/config.ini
5.2 NDB Cluster 数据同步的问题
- 若需要数据同步的话,需要将表的引擎设置 engine=ndbcluster。
- 数据库不会自动同步,需要再同步的服务器新建相同名字的数据库,库里面的表单数据就会自己同步了,前提表的引擎为 ndbcluster。
5.3 关于数据恢复的问题
Backup Id = 4
Nodeid = 4
backup path = /data/mysql-cluster/BACKUP/BACKUP-4/
Opening file '/data/mysql-cluster/BACKUP/BACKUP-4/BACKUP-4.4.ctl'
File size 22368 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.42 ndb-7.4.22
Stop GCP of Backup: 3157
Failed to initialize consumers
NDBT_ProgramExit: 1 - Failed
恢复数据时发现报以上的错误,解决方法为:
编辑 config.ini 配置文件
新增一行
[mysqld]
其他不用理,重启 NDBCluster,再进行备份即可
网友评论