InnoDB Cluster添加实例报错:服务器配置不当无法加入组复制
从报错日志可定位核心问题:待加入节点innodb-2无法通过33061端口与集群现有节点innodb-1建立组复制内部通信连接,导致加入超时失败。
检查主机名解析配置
分别登录innodb-1、innodb-2两台虚拟机,查看/etc/hosts文件,确认两台主机都配置了对方的IP与主机名映射:
innodb-1的hosts需添加[innodb-2的实际IP] innodb-2
innodb-2的hosts需添加[innodb-1的实际IP] innodb-1
避免主机名无法解析导致连接失败。验证端口连通性
在innodb-2上执行nc -zv innodb-1 33061或telnet innodb-1 33061命令,确认33061端口是否可达。即使已关闭防火墙,也需要排查是否存在SELinux未关闭、33061端口被其他进程占用、虚拟机网络网段隔离(比如NAT/仅主机模式的路由问题)等情况。检查组复制通信端口配置
分别登录两台MySQL实例,执行show variables like 'group_replication_local_address';,确认innodb-1的配置为innodb-1:33061,innodb-2的配置为innodb-2:33061,如果配置为127.0.0.1或0.0.0.0,会导致外部节点无法访问通信端口。检查集群IP白名单配置
登录innodb-1的MySQL命令行,执行show variables like '%group_replication_ip%list';,查看白名单(8.0.22之后版本参数名改为group_replication_ip_allowlist,旧名group_replication_ip_whitelist仍兼容)配置,确认两台虚拟机的IP段已加入白名单,例如两台节点IP属于192.168.56.0/24段时,白名单需要包含192.168.56.0/24,127.0.0.1/8。
- 修复上述排查出的问题后,先在待加入节点innodb-2上执行命令重置组复制状态:
RESET MASTER; STOP GROUP_REPLICATION;
- 用MySQL Shell连接到集群主节点innodb-1,重新获取集群对象后执行添加实例操作:
var cluster = dba.getCluster() cluster.addInstance('root@innodb-2:3306')
- 若实例无业务数据,添加时优先选择Clone恢复模式,避免增量恢复的额外兼容问题。
内容的提问来源于stack exchange,提问作者Aline137

