Docker Compose部署MySQL Cluster后跨节点表不同步求助
解决MySQL Cluster表未同步的问题
1. 确认表的存储引擎类型
MySQL Cluster仅同步使用NDBCluster(或NDBCLUSTER)存储引擎的表,MyISAM/InnoDB等本地引擎的表不会在节点间同步。
- 连接172.28.0.11节点,执行以下命令检查目标表的引擎:
SHOW CREATE TABLE 你的表名; - 如果输出的
ENGINE字段不是NDBCluster,立即修改存储引擎:
后续建表时务必显式指定ALTER TABLE 你的表名 ENGINE=NDBCluster;ENGINE=NDBCluster,避免使用默认引擎导致同步失败。
2. 验证NDB数据节点的运行状态
- 进入集群管理节点容器(如果部署了管理节点),执行
ndb_mgm进入管理控制台,输入SHOW命令查看所有数据节点状态,确保所有节点处于started状态,无disconnected或starting异常。 - Docker环境下进入管理节点的命令:
docker exec -it 管理节点容器名 ndb_mgm
3. 检查SQL节点的集群配置
- 确认所有SQL节点的
my.cnf(或挂载的配置文件)中包含以下必要参数:ndbcluster:启用NDB集群功能ndb-connectstring:正确指向集群管理节点的地址
- 核对Docker Compose配置中,各SQL节点的环境变量或配置挂载是否正确,避免出现地址写错、参数缺失的情况。
4. 检查SQL节点的集群连接状态
- 在172.28.0.12节点执行以下命令,确认节点是否正常接入集群:
SHOW STATUS LIKE 'Ndb_cluster_connection_status'; - 如果输出不是
connected,排查以下问题:- 测试172.28.0.12容器与管理节点、数据节点的网络连通性(比如用
ping命令) - 确认容器间防火墙/安全组是否开放NDB默认端口(1186、2202等)
- 测试172.28.0.12容器与管理节点、数据节点的网络连通性(比如用
5. 手动触发元数据同步
若存在元数据同步延迟,可在172.28.0.12节点执行:
FLUSH TABLES;
或重新连接数据库,查看表是否正常显示。
6. 排查集群日志找异常
- 查看数据节点和管理节点的日志,定位同步错误:
- 数据节点日志通常在容器内
/var/lib/mysql-cluster/目录下 - 查看容器日志的命令:
docker logs 管理节点容器名 docker logs 数据节点容器名
- 数据节点日志通常在容器内
内容的提问来源于stack exchange,提问作者Pamungkas Jayuda
相关产品推荐
相关产品推荐

