添加第4个MariaDB Galera节点失败,寻求技术解决方案
解决Galera集群添加异地节点失败的问题
我帮你梳理下这个问题的核心原因和解决步骤,都是Galera集群异地扩容时常见的坑:
1. 先搞定版本不兼容的核心问题
Galera集群对版本一致性的要求极高——所有节点的MariaDB主版本、小版本,甚至Galera库版本必须完全一致。你的旧节点是10.1.29,新节点是10.1.33,哪怕同属10.1系列,小版本差异也会导致同步协议不兼容,这是你报错的主要原因之一。
解决步骤:
- 停止新节点的MariaDB服务:
sudo systemctl stop mariadb - 卸载当前10.1.33版本,添加对应10.1.29的软件源,重新安装完全匹配的版本
- 验证
/usr/lib/galera/libgalera_smm.so的版本和旧节点一致(可以从旧节点复制该文件替换新节点的对应文件,确保底层Galera库版本统一)
2. 排查异地网络与端口问题
异地节点的网络限制是SST同步超时的高频原因,你需要确保新节点和所有旧节点之间开放以下端口:
- 3306:MySQL服务端口
- 4567:Galera集群通信端口(TCP和UDP都要开)
- 4568:IST增量同步端口
- 4444:rsync方式的SST同步端口
可以在新节点用telnet node1_ip 4567测试连通性,如果不通,检查防火墙、安全组或者异地网络的策略限制。
3. 修正集群配置的细节问题
- 旧节点配置要生效:你已经在旧节点的
galera.cnf里加了新节点IP,但必须逐个重启旧节点的MariaDB服务,否则旧节点不会识别新节点的加入请求 - 新节点配置调整:
- 把新节点
wsrep_cluster_address里的自己IP去掉,只填已运行的三个旧节点IP:wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip" - 清空新节点
/var/lib/mysql/下的所有文件(保留配置相关文件),初始状态的残留数据会干扰SST同步:sudo rm -rf /var/lib/mysql/*
- 把新节点
4. 查看更详细的日志定位问题
如果以上操作后还是失败,去看更细节的日志:
- 新节点的MariaDB错误日志:
/var/log/mysql/error.log - 作为donor的旧节点的SST日志:
/var/log/mysql/rsync_sst.log,里面会记录rsync传输时的具体错误(比如权限、文件缺失等)
内容的提问来源于stack exchange,提问作者Dora
相关产品推荐
相关产品推荐

