解决方法:立即执行 SQL 命令 kill 掉相关连接 ID,然后重启 Group Replication 服务。远程处理:使用 mysql -h 远程IP -u root -p 登录,查询 SHOW PROCESSLIST 找到 donor applier 进程,kill 对应 ID,最后在所有节点执行 STOP GROUP_REPLICATION; START GROUP_REPLICATION;
来源1
ER_GRP_RPL_UNABLE_TO_KILL_CONN_REC_DONOR_APPLIER 这个错误通常发生在 MySQL Group Replication 中,当 donor 节点无法杀死 applier 连接时。日志显示:[ERROR] Plugin group_replication reported: 'Unable to kill connection used by donor applier (Thread_Id=45).'
来源2
快速解决:1. 在 donor 节点执行 SHOW PROCESSLIST; 找到 Thread ID 是 group_replication_recovery 的进程。2. KILL CONNECTION
来源3
在所有组成员节点上执行:SET GLOBAL group_replication_recovery='OFF'; 然后 STOP GROUP_REPLICATION; 等几分钟后 START GROUP_REPLICATION; 这能清理卡住的 donor applier 连接。测试环境验证有效。
来源4
远程处理指南:ssh 到 donor 服务器,mysql -u root -p,执行 SELECT * FROM performance_schema.replication_connection_status WHERE PROCESSLIST_STATE LIKE '%applier%'; 找到后 kill。避免直接重启主库,用远程工具如 MySQL Workbench 连接。
来源5
错误原因:Group Replication 同步时,donor 无法终止 applier 线程,常因网络波动或权限问题。解决代码:KILL CONNECTION 123; --替换为实际ID SET GLOBAL group_replication_group_name='uuid'; --刷新组信息。
来源6
预防措施:配置 group_replication_recovery_complete_timeout=60; 增加超时时间。发生错误后,远程检查:mysql -h 192.168.1.100 -e "SHOW PROCESSLIST" | grep applier,然后逐一 kill。
来源7
完整教程:1. 停止所有节点 GR:STOP GROUP_REPLICATION; 2. 在原 donor 上 kill 进程。3. 启动 GR:START GROUP_REPLICATION; 4. 检查 SELECT * FROM performance_schema.replication_group_members; 确认在线。
FAQ
Q: 为什么会出现这个错误?
A: 因为 donor 节点无法杀死用于 applier 的连接,通常是线程卡住。
Q: 远程怎么快速 kill?
A: 用 mysql -h IP -u root 登录,SHOW PROCESSLIST 找 ID,KILL CONNECTION ID。
Q: 重启服务行吗?
A: 可以,但先试 kill,远程重启用 systemctl -H IP restart mysqld。
Q: 怎么预防?
A: 调大 recovery timeout 参数,保持网络稳定。