MySQL Cluster是支持分布式存储、高可用特性的数据库集群方案,通过多节点协同工作实现数据的冗余备份与负载均衡,能够有效提升数据库服务的稳定性与扩展能力。搭建MySQL Cluster需要先明确各节点的角色与分工,再按照规范流程完成部署。

MySQL Cluster节点类型说明
MySQL Cluster主要包含三类核心节点,不同节点的功能与部署要求存在差异:
| 节点类型 | 核心功能 | 部署要求 |
|---|---|---|
| 管理节点(NDB_MGMD) | 负责集群的配置管理、节点状态监控与故障恢复协调 | 建议独立部署,保证配置文件的统一管理 |
| 数据节点(NDBD) | 存储实际的集群数据,负责数据的读写与同步 | 需要足够的磁盘与内存资源,建议至少部署2个实现冗余 |
| SQL节点(MySQLD) | 对外提供标准的MySQL服务接口,接收客户端的SQL请求 | 可以部署多个实现负载均衡,兼容常规MySQL客户端访问 |
安装前置准备
在开始安装前需要完成以下准备工作:
- 准备至少3台服务器,分别用于部署管理节点、数据节点、SQL节点,也可以根据需求在同一台服务器部署多个节点,但生产环境建议分离部署
- 所有服务器安装相同版本的Linux操作系统,关闭防火墙或开放对应端口,1186为管理节点默认端口,3306为SQL节点默认端口,数据节点端口可自定义
- 下载对应操作系统的MySQL Cluster安装包,建议使用官方稳定版本,避免兼容性问题
- 所有服务器之间配置好SSH免密登录,方便后续配置文件同步与操作
管理节点安装与配置
首先完成管理节点的部署,解压下载好的MySQL Cluster安装包到指定目录,例如/usr/local/mysql_cluster,然后创建管理节点的配置文件config.ini:
[ndbd default] NoOfReplicas=2 # 每个数据片段的副本数,设置为2保证数据冗余 DataMemory=80M # 数据节点用于存储数据的内存大小 IndexMemory=18M # 数据节点用于存储索引的内存大小 [ndb_mgmd] hostname=192.168.0.10 # 管理节点服务器IP datadir=/usr/local/mysql_cluster/data # 管理节点数据存储目录 [ndbd] hostname=192.168.0.11 # 第一个数据节点服务器IP datadir=/usr/local/mysql_cluster/data # 数据节点数据存储目录 [ndbd] hostname=192.168.0.12 # 第二个数据节点服务器IP datadir=/usr/local/mysql_cluster/data [mysqld] hostname=192.168.0.13 # 第一个SQL节点服务器IP [mysqld] hostname=192.168.0.14 # 第二个SQL节点服务器IP
配置文件创建完成后,初始化管理节点目录,然后启动管理节点服务:
# 创建数据存储目录 mkdir -p /usr/local/mysql_cluster/data # 启动管理节点,--initial参数首次启动使用,后续重启不需要加 /usr/local/mysql_cluster/bin/ndb_mgmd -f /usr/local/mysql_cluster/config.ini --initial
数据节点安装与配置
在每台数据节点服务器上解压MySQL Cluster安装包到相同目录,创建数据节点的配置文件my.cnf:
[mysqld] ndbcluster # 启用NDB集群存储引擎 ndb-connectstring=192.168.0.10 # 管理节点IP地址 [mysql_cluster] ndb-connectstring=192.168.0.10 # 管理节点IP地址
启动数据节点服务,首次启动同样需要加--initial参数初始化数据:
# 创建数据目录 mkdir -p /usr/local/mysql_cluster/data # 启动数据节点 /usr/local/mysql_cluster/bin/ndbd --initial
SQL节点安装与配置
SQL节点的部署和普通MySQL服务类似,在对应服务器解压安装包后,创建my.cnf配置文件:
[mysqld] ndbcluster # 启用NDB集群存储引擎 ndb-connectstring=192.168.0.10 # 管理节点IP地址 datadir=/usr/local/mysql_cluster/data socket=/tmp/mysql.sock port=3306 [mysql_cluster] ndb-connectstring=192.168.0.10 # 管理节点IP地址
初始化MySQL系统库后启动SQL节点服务:
# 初始化系统库 /usr/local/mysql_cluster/bin/mysqld --initialize-insecure --user=root --datadir=/usr/local/mysql_cluster/data # 启动SQL节点 /usr/local/mysql_cluster/bin/mysqld_safe --user=root &
集群状态验证
所有节点启动完成后,可以在管理节点服务器上执行以下命令查看集群状态:
/usr/local/mysql_cluster/bin/ndb_mgm -e show
如果输出中显示所有数据节点和SQL节点状态为connected,说明集群部署成功。可以连接到任意SQL节点,创建NDB存储引擎的表进行测试:
-- 连接到SQL节点 mysql -h 192.168.0.13 -P 3306 -u root -- 创建测试数据库 CREATE DATABASE test_cluster; USE test_cluster; -- 创建NDB存储引擎的表 CREATE TABLE user_info ( id INT PRIMARY KEY, name VARCHAR(50) ) ENGINE=NDB; -- 插入测试数据 INSERT INTO user_info VALUES (1, 'test_user'); -- 在另一个SQL节点查询,能够查到数据说明集群同步正常 SELECT * FROM user_info;
常见问题说明
安装过程中如果遇到节点无法连接的问题,首先检查管理节点配置文件中的IP地址是否正确,再确认对应端口是否开放。如果数据节点启动失败,可以查看数据目录下的日志文件排查错误原因。生产环境中建议为管理节点配置冗余,避免单点故障影响整个集群的运行。
MySQL_Cluster数据库集群分布式存储高可用部署修改时间:2026-06-06 23:47:11