Error number: MY-010445; Symbol: ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM; SQLSTATE: HY000
Message: QUERY(COMMIT or ROLLBACK) or XID_LOG_EVENT is not expected in an event stream %s.
这是MySQL官方错误,主要用于处理数据复制事务(RPL)。
错误说明
MY-010445(ER_RPL_UNEXPECTED_COMMIT_ROLLBACK_OR_XID_LOG_EVENT_IN_STREAM)错误表明在复制流中发现了意外的提交,回滚或XID日志事件。 这暗示日志文件可能不是完整的或损坏的,或者正在为某个注册的表进行复制,而不是另一个表。
常见案例
造成这个错误的原因有很多,比如:
1.从控制节点(master)的binary log 日志被意外的中断或停止,以至于复制日志里面残缺不全;
2.在复制时,从节点(slave)的replication user 被 revoke, 导致无法登录master上执行正确的复制;
3.当主副节点交换时,不小心使用错误的信息;
4.使用第三方工具,比如pt-heartbeat, 由于日志文件不全,导致master与slave不一致,复制失败。
解决方法
由于每种情况的原因都不同,需要先找到具体的原因后,再进行解决。
1.首先检查mysql从节点服务器上的部署环境,是否正确;
2.检查master端服务器上mysql配置文件和开启的binlog format是否一致;
3.检查master与slave服务器上innodb 状态是否一致;
4.重新创建 账号来重新启动复制;
5.检查主机上是否造成socket connection break;
6.清除日志缓存,重新开启复制;
7.重新创建replication,检查master上binlog log状态是否正确。