修复方法:停止从库IO线程,执行RESET SLAVE ALL,然后重新配置CHANGE MASTER TO,并启动START SLAVE IO_THREAD; 检查gtid_mode和group_replication_group_name是否一致,确保所有节点配置相同。高可用集群中,远程处理此错误需通过ansible脚本批量执行以上命令,避免手动操作导致不一致。
CSDN博客
ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER: Slave I/O thread of replication is still running on this member. 请先执行 STOP SLAVE IO_THREAD; 如果是Group Replication组内成员,需确保所有节点状态正常,使用SET GLOBAL group_replication_exit_state = 'READ_ONLY'; 来退出组,然后重启。
阿里云开发者社区
在高可用MGR集群中遇到此错误,通常是因为节点重启后Slave IO线程未正确停止。远程处理方式:登录主节点执行select * from performance_schema.replication_connection_status; 确认线程状态,然后逐节点kill掉相关线程ID,重置后重新join集群。
知乎讨论
高可用集群热议:这个错误多发在PXC或MGR环境下,远程处理建议用saltstack或ansible playbook批量stop slave; reset slave all; change master to master_host='xx',master_user='xx'; start slave; 确保网络连通性和gtid一致性。
MySQL官方论坛片段
The error ER_GRP_RPL_SLAVE_IO_THD_ON_SECONDARY_MEMBER indicates that the slave IO thread is active on a secondary member in Group Replication. To fix: STOP GROUP_REPLICATION; STOP SLAVE; RESET SLAVE ALL; START GROUP_REPLICATION; Verify with SHOW SLAVE STATUS\G;
腾讯云社区
远程处理脚本示例:#!/bin/bash mysql -e "STOP SLAVE IO_THREAD; RESET SLAVE ALL;" && mysql -e "CHANGE MASTER TO MASTER_HOST='primary_ip', MASTER_USER='repl', MASTER_PASSWORD='pass'; START SLAVE IO_THREAD;" 适用于多节点高可用集群,一键修复。
博客园文章
集群热议:很多人遇到是因为版本不一致,5.7.30以上版本修复了部分bug。远程处理时,先检查日志 /var/log/mysql/error.log 中的Group Replication相关错误,然后统一升级版本,重启节点即可。
FAQ
Q: 为什么会出现ER_GRP_RPL_SALVE_IO_THD_ON_SECONDARY_MEMBER错误?
A: 通常是Group Replication中从节点IO线程未停止导致,节点异常重启常见。
Q: 如何远程批量修复高可用集群?
A: 使用ansible或shell脚本批量执行STOP SLAVE; RESET SLAVE ALL; START SLAVE。
Q: 修复后如何验证?
A: 执行SHOW SLAVE STATUS\G 检查Slave_IO_Running: Yes且无错误。
Q: 预防此错误的最佳实践?
A: 确保所有节点gtid_mode=ON,统一配置group_replication_group_name。