Linux虚拟机上MySQL Cluster(MCM)无法启动:防火墙开启时mysqld及API节点异常
MySQL Cluster防火墙开启时mysqld及API节点启动失败问题
问题描述
当所有虚拟机开启防火墙时,MySQL Cluster无法正常启动,仅数据节点和管理节点能启动,mysqld及API节点启动失败;关闭防火墙时集群可正常启动。
已尝试操作
在firewalld中添加1862、18620、1186端口并重启防火墙,但问题仍未解决。
集群架构
vm1(data node) 1 data node vm2(management node + mysqld) 1 management node 1 mysqld 10+ api nodes
错误日志
2024-03-14T09:57:54.641994Z 0 [System] [MY-010865] [NDB] connection[0], NodeID: 146, no storage nodes connected (timed out) 2024-03-14T09:57:55.890727Z 0 [System] [MY-010865] [NDB] connection[1], NodeID: 146, no storage nodes connected (timed out) 2024-03-14T09:57:57.138724Z 0 [System] [MY-010865] [NDB] connection[2], NodeID: 147, no storage nodes connected (timed out) 2024-03-14T09:57:58.388321Z 0 [System] [MY-010865] [NDB] connection[3], NodeID: 148, no storage nodes connected (timed out) 2024-03-14T09:57:58.389031Z 0 [System] [MY-010866] [NDB] Binlog: Starting... 2024-03-14T09:57:58.389521Z 2 [System] [MY-010866] [NDB] Binlog: Started 2024-03-14T09:57:58.389552Z 2 [System] [MY-010866] [NDB] Binlog: Setting up 2024-03-14T09:57:58.389878Z 2 [System] [MY-010866] [NDB] Binlog: Setup completed 2024-03-14T09:57:58.389892Z 2 [System] [MY-010866] [NDB] Binlog: Wait for server start 2024-03-14T09:57:58.389901Z 0 [System] [MY-010866] [NDB] Index Stat: Starting... 2024-03-14T09:57:58.389946Z 0 [System] [MY-010866] [NDB] Index Stat: Wait for server start 2024-03-14T09:57:58.390324Z 0 [System] [MY-010866] [NDB] Metadata: Starting... 2024-03-14T09:57:58.390365Z 0 [System] [MY-010866] [NDB] Metadata: Wait for server start 2024-03-14T09:57:58.400743Z 0 [System] [MY-010865] [NDB] ndbinfo prefix: './ndbinfo/ndb@0024' 2024-03-14T09:57:58.590289Z 0 [System] [MY-010229] [Server] Starting XA crash recovery... 2024-03-14T09:57:58.599903Z 0 [System] [MY-010232] [Server] XA crash recovery finished.
解决方案建议
确认完整端口需求
MySQL Cluster组件间同时依赖TCP和UDP协议通信,需检查config.ini中的端口配置:- 管理节点默认端口:1186(TCP/UDP)
- 数据节点默认通信端口:2202(TCP/UDP,用于节点间及与API节点交互)
- 若自定义了1862、18620等端口,需确保这两个协议都开放
在firewalld中补全端口规则
执行以下命令添加完整端口规则(替换为你的实际端口):firewall-cmd --add-port=1186/tcp --add-port=1186/udp --permanent firewall-cmd --add-port=2202/tcp --add-port=2202/udp --permanent firewall-cmd --add-port=1862/tcp --add-port=1862/udp --permanent firewall-cmd --add-port=18620/tcp --add-port=18620/udp --permanent firewall-cmd --reload验证端口开放状态
检查端口是否成功开放:firewall-cmd --list-ports测试节点连通性
在mysqld/API节点上测试与数据节点的端口连通性:nc -zv <vm1-ip> 2202 nc -zv <vm1-ip> 1862若连接失败,需确认防火墙规则应用的网络区域是否正确,或是否存在其他网络限制。
核对集群配置
确认config.ini中各节点的IP、端口配置与防火墙开放的端口完全一致,无配置冲突。
内容的提问来源于stack exchange,提问作者Rajoli Hemanth Kumar
相关产品推荐
相关产品推荐

