概述
本章,您将学习到如何在一个运行的 MySQL NDB Cluster 中添加新的 SQL 节点。
在添加新 SQL 节点之前,先取消文件系统加密。
Shell (192.168.100.10)> killall ndb_mgmd
Shell (192.168.100.10)> vim /etc/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=98M
CompressedBackup=1
BackupDataDir=/mysql-cluster-backup
...
Shell (192.168.100.10)> ndb_mgmd --configdir=/etc/mysql-cluster/ -f /etc/mysql-cluster/config.ini --initial
# 节点 ID 为 2 的终端
Shell (192.168.100.12)> killall ndbd
Shell (192.168.100.12)> vim /etc/my.cnf
[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.100.10
Shell (192.168.100.12)> ndbd --initial
# 节点 ID 为 3 的终端
Shell (192.168.100.14)> killall ndbd
Shell (192.168.100.14)> vim /etc/my.cnf
[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.100.10
Shell (192.168.100.14)> ndbd --initial
# 节点 ID 为 4 的终端
Shell (192.168.100.18)> killall ndbd
Shell (192.168.100.18)> vim /etc/my.cnf
[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.100.10
Shell (192.168.100.18)> ndbd --initial
# 节点 ID 为 5 的数据数据
Shell (192.168.100.20)> killall ndbd
Shell (192.168.100.20)> vim /etc/my.cnf
[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=192.168.100.10
Shell (192.168.100.20)> ndbd --initial
# 重启 SQL 节点
Shell (192.168.100.16)> /usr/local/mysql/support-files/mysql.server restart
操作步骤
配置新 SQL 节点
| 操作系统 | 操作系统环境 | IP 地址 | 硬件信息 | NDB Cluster 版本 | 节点类型 |
|---|---|---|---|---|---|
| RL 8.10 | 纯命令行 | 192.168.100.10/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | 管理节点 |
| RL 8.10 | 纯命令行 | 192.168.100.12/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | 数据节点 A |
| RL 8.10 | 纯命令行 | 192.168.100.14/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | 数据节点 B |
| RL 8.10 | 纯命令行 | 192.168.100.16/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | SQL 节点 1 |
| RL 8.10 | 纯命令行 | 192.168.100.18/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | 数据节点 C |
| RL 8.10 | 纯命令行 | 192.168.100.20/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | 数据节点 D |
| RL 8.10 | 纯命令行 | 192.168.100.22/24 | 1 core;4GB 内存;50GB 存储 | 8.4.8 LTS | SQL 节点 2 |
依然是熟悉的操作:
# 添加无任何用户成员的组
Shell (192.168.100.22)> groupadd -r mysql
# 添加用户,并指定一些用户的属性
Shell (192.168.100.22)> useradd -r -g mysql -s /sbin/nologin mysql
# 下载
Shell (192.168.100.22)> wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.4/mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz
# 解压归档文件,并从归档文件中提取出文件
Shell (192.168.100.22)> tar -vxf mysql-cluster-8.4.8-linux-glibc2.28-x86_64.tar.xz -C /usr/local/src/
# 创建目录的软链接(符号链接)
Shell (192.168.100.22)> ln -s /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/ /usr/local/mysql
# 查阅
Shell (192.168.100.22)> ls -l /usr/local/mysql
lrwxrwxrwx 1 root root 58 Apr 26 14:50 /usr/local/mysql -> /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/
# 初始化,这将随机生成 root 的用户密码
## 若提示错误,请安装 libaio 软件包
Shell > cd /usr/local/mysql/bin/ && ./mysqld --initialize
2026-04-26T06:51:23.543661Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2026-04-26T06:51:23.545008Z 0 [System] [MY-013169] [Server] /usr/local/src/mysql-cluster-8.4.8-linux-glibc2.28-x86_64/bin/mysqld (mysqld 8.4.8-cluster) initializing of server in progress as process 41207
2026-04-26T06:51:23.550415Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-04-26T06:51:23.800269Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-04-26T06:51:25.694169Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xvNa)b3=:xyf
2026-04-26T06:51:27.511061Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
# 递归变更链接目录下所有文件的所有者和所属组,递归变更数据目录的所有者
Shell (192.168.100.22)> chown -R root:mysql /usr/local/mysql/
Shell (192.168.100.22)> chown -R mysql /usr/local/mysql/data/
# 编辑 /etc/my.cnf 文件
Shell (192.168.100.22)> vim /etc/my.cnf
[mysqld]
ndbcluster
default-storage-engine=NDBCLUSTER
[mysql_cluster]
ndb-connectstring=192.168.100.10
对管理节点进行配置并执行滚动重启
在管理节点 config.ini 中配置相关参数。若有多个管理服务器(管理节点),则需要修改所有的 config.ini 文件:
Shell (192.168.100.10)> vim /etc/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=98M
CompressedBackup=1
BackupDataDir=/mysql-cluster-backup
[ndb_mgmd]
HostName=192.168.100.10
DataDir=/var/log/mysql-cluster
NodeId=1
[ndbd]
HostName=192.168.100.12
NodeId=2
DataDir=/usr/local/mysql/data
[ndbd]
HostName=192.168.100.14
NodeId=3
DataDir=/usr/local/mysql/data
[ndbd]
HostName=192.168.100.18
NodeId=4
DataDir=/usr/local/mysql/data
[ndbd]
HostName=192.168.100.20
NodeId=5
DataDir=/usr/local/mysql/data
[mysqld]
HostName=192.168.100.16
NodeId=6
[mysqld]
HostName=192.168.100.22
NodeId=7
[mysqld]
[mysqld]
滚动重启所有的管理服务器(管理节点),单个管理服务器(管理节点)的操作如下所示:
Shell (192.168.100.10)> killall ndb_mgmd
Shell (192.168.100.10)> ndb_mgmd --configdir=/etc/mysql-cluster/ -f /etc/mysql-cluster/config.ini --initial
注意!实际生产环境下,若您有多个管理节点,则不应该一次性将所有管理节点关闭,而应该是滚动重启一个管理节点后,再配置下一个管理节点。
对每一个数据节点执行滚动重启
# 在管理节点的终端中使用交互命令完成数据节点的滚动重启
Shell (192.168.100.10)> ndb_mgm
ndb_mgm> 2 restart
ndb_mgm> 3 restart
ndb_mgm> 4 restart
ndb_mgm> 5 restart
对每一个旧的SQL节点执行重启
Shell (192.168.100.16)> /usr/local/mysql/support-files/mysql.server restart
启动新SQL节点的进程并修改密码
Shell (192.168.100.22)> /usr/local/mysql/support-files/mysql.server start
Shell (192.168.100.22)> /usr/local/mysql/bin/mysql -h localhost -u root --password="xvNa)b3=:xyf"
MySQL > alter user 'root'@'localhost' identified by 'PassOut,15:0->';
提示
不建议将所有 SQL 节点中同一用户名的密码设置为相同,这会增加安全风险。
最后
在任意一个管理节点上查看并验证:
Shell (192.168.100.10)> ndb_mgm -e "show"
[ndbd(NDB)] 4 node(s)
id=2 @192.168.100.12 (mysql-8.4.8 ndb-8.4.8, Nodegroup: 0, *)
id=3 @192.168.100.14 (mysql-8.4.8 ndb-8.4.8, Nodegroup: 0)
id=4 @192.168.100.18 (mysql-8.4.8 ndb-8.4.8, Nodegroup: 1)
id=5 @192.168.100.20 (mysql-8.4.8 ndb-8.4.8, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.100.10 (mysql-8.4.8 ndb-8.4.8)
[mysqld(API)] 4 node(s)
id=6 @192.168.100.16 (mysql-8.4.8 ndb-8.4.8)
id=7 @192.168.100.22 (mysql-8.4.8 ndb-8.4.8)
id=8 (not connected, accepting connect from any host)
id=9 (not connected, accepting connect from any host)
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论










