QA环境Galera集群启动节点时遇unknown module 'rsync_sst-undo_dir'错误
问题背景
QA环境的3节点Galera集群意外关机,重启引导第一个节点后运行正常,但启动第二个节点时出现以下错误:
rsyncd[30958]: unknown module 'rsync_sst-undo_dir' tried from XXX
同时MySQL日志显示状态传输失败:
[Warning] WSREP: 0.0 : State transfer to 1.0 (x) failed: -255 (Unknown error 255) [ERROR] WSREP: /home/buildbot/buildbot/build/gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():1207: Will never receive state. Need to abort.
服务最终崩溃:
rsyncd[30958]: unknown module 'rsync_sst-undo_dir' tried from XXX systemd[1]: mariadb.service: main process exited, code=killed, status=6/ABRT
解决指引
检查rsyncd配置与SST模块定义
- 登录第一个节点,确认Galera使用的SST方法为rsync:
SHOW VARIABLES LIKE 'wsrep_sst_method'; - 查看rsyncd主配置文件(通常为
/etc/rsyncd.conf),或Galera动态生成的SST配置(比如/var/lib/mysql/rsync_sst.conf),确认是否存在rsync_sst-undo_dir模块。 - 若模块缺失,手动添加配置(替换路径和允许的节点IP):
注意:[rsync_sst-undo_dir] path = /var/lib/mysql/undo_log read only = yes uid = mysql gid = mysql hosts allow = 192.168.1.102 192.168.1.103path需指向MariaDB实际的undo日志目录,确保mysql用户对该目录有读取权限。
- 登录第一个节点,确认Galera使用的SST方法为rsync:
重置第二个节点的集群状态
- 停止第二个节点的MariaDB服务:
systemctl stop mariadb - 删除集群状态文件:
rm -rf /var/lib/mysql/grastate.dat /var/lib/mysql/gvwstate.dat - 若第二个节点数据目录存在残留的不一致数据,建议备份后清空(保留
my.cnf等配置文件)。 - 确保rsyncd服务正常运行:
systemctl start rsyncd systemctl enable rsyncd
- 停止第二个节点的MariaDB服务:
调整SST参数(可选)
- 若rsync模块问题反复出现,可临时切换SST方法为mysqldump(在第一个节点执行):
或在SET GLOBAL wsrep_sst_method='mysqldump';my.cnf中添加配置永久生效:wsrep_sst_method = mysqldump - 确认SST授权用户权限足够:
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;
- 若rsync模块问题反复出现,可临时切换SST方法为mysqldump(在第一个节点执行):
验证节点加入
启动第二个节点后,登录节点执行以下命令确认集群状态:SHOW STATUS LIKE 'wsrep_cluster_size';查看结果应为
3(待第三个节点启动后),同时检查rsyncd日志(/var/log/rsyncd.log)和MariaDB日志,确认无报错。
内容的提问来源于stack exchange,提问作者stackuser
相关产品推荐
相关产品推荐

