Error number: MY-013308; Symbol: ER_GRP_RPL_TRX_WAIT_FOR_GROUP_PREPARE_FAILED; SQLSTATE: HY000
Message: Error on transaction ‘%d:%lld’ from session ‘%u’ while waiting for being prepared on all group members.
错误说明
ER_GRP_RPL_TRX_WAIT_FOR_GROUP_PREPARE_FAILED是MySQL复制中遇到的一个错误。它会引起GTID复制发生异常,导致复制失败。MySQL 8.0引入了一种新的分布式事务复制形式:GTID复制。在GTID复制中,复制服务器会准备一个事务,而主服务器会将事务拆分成小块,将其发送给备机。但是在处理过程中,备机可能会出现ER_GRP_RPL_TRX_WAIT_FOR_GROUP_PREPARE_FAILED错误,表示等待事务组准备失败。此时,复制会中断,被称为复制失败。
常见案例
解决方法
在处理ER_GRP_RPL_TRX_WAIT_FOR_GROUP_PREPARE_FAILED错误时首先要考虑的是,主从节点之间是否有网络故障。如果是,应尝试切换网络连接,并检查防火墙设置,以确保复制端口正确配置。在进行比较面向过程的调试或排除步骤时,检查日志文件可能会很有用。它们可能会提供足够的上下文来解释错误,从而根据这些上下文提出解决方案。此外,可以使用主从结构工具性能管理模块来调整服务器,暂停复制连接和监控连接情况。
此外,要解决ER_GRP_RPL_TRX_WAIT_FOR_GROUP_PREPARE_FAILED,也可以重置GTID,将GTID复制失败的服务器临时关闭,以恢复复制并恢复正常可用性。在这种情况下,检查事务日志状态,并将其移动到高可用状态,以便重新启动GTID复制后重新开始服务。最后,还可以强制GTID复制模式而不是半同步复制模式,以启用物理读取复制功能,可实现高可靠和高可用。