yejr 发表于 2025-2-24 14:39:50

【分享】用Shell添加新节点时,如果该节点换过IP该怎么处理

相关背景信息介绍:

1. 原来已有一个三节点的MGR集群
2. 三个节点重启后,其中有两个节点IP发生变化
3. 每个节点上都设置了 group_replication_local_address 和 report_host,均使用的是旧IP地址
4. 第一个节点后,调用 dba.rebootClusterFromCompleteOutage() 重新拉起MGR集群,IP发生变化的两个节点无法加入
5. 调用 cluster.addInstance() 指定新的IP地址,想要重新将另外两个节点加进来,报告失败

解决办法
1. 由于 report_host 参数指定的还是旧IP地址,这是无法被重新加入的最主要原因
2. 修改 my.cnf 中的 report_host 参数,将 IP 地址更新为变化后的新IP地址
3. 修改 report_host 需要重启实例才能生效,不能在线动态修改
4. 重启完成后,再次调用 cluster.addInstance() 加入节点时,可以同时配置 localAddress 参数,例如 cluster.addInstance("172.17.139.2", {"localAddress":"172.17.139.2:33061"}),在加入节点的同时修改 localAddress 参数(对应到 group_replication_local_address 参数)。

提示:调佣 addInstance() 函数时修改 localAddress 参数动作会被持久化保存在 mysqld-auto.cnf 中,而不是 my.cnf 中,所以最好再手动同步修改到 my.cnf 中,保持两份配置文件的一致性。

mlovewt 发表于 2025-2-24 16:01:38

hostname 变更后咋处理?

yejr 发表于 2025-2-24 16:29:19

mlovewt 发表于 2025-2-24 16:01
hostname 变更后咋处理?

如果已经设置过 report_host 则无需处理
如果是用hostname来标记节点名,那就需要手动处理,和本文的做法差不多
页: [1]
查看完整版本: 【分享】用Shell添加新节点时,如果该节点换过IP该怎么处理