MySQL Error number: MY-010917; Symbol: ER_GTID_EXECUTED_WAS_UPDATED; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: MY-010917; Symbol: ER_GTID_EXECUTED_WAS_UPDATED; SQLSTATE: HY000

Message: @@GLOBAL.GTID_EXECUTED was changed from ‘%s’ to ‘%s’.

错误说明

MY-010917: ER_GTID_EXECUTED_WAS_UPDATED错误是MySQL数据库中比较常见的错误。指的是MySQL发起的某种特定事务管理操作期间,与该事务管理有关的全局事务标识(即GTID)所标识的事务或其他当前正在执行的事务在事务提交之后,GTID指示的事务已经在某一时刻被修改。

一般情况下,MY-010917错误由MySQL复制过程引起,特别是在复制服务器与主服务器之间出现复制落后问题时,复制服务器试图进行对应位置逻辑时就会发生该错误。

常见案例

当我们在使用MySQL复制时,往往会出现一些错误,而这也正是MY-010917错误的普遍发生的案例。MySQL的复制系统是通过全局事务标识(GTID)来驱动的,全局事务标识有时会被主服务器改变,从而造成它不再指向原先的事务。而当复制服务器试图执行之前的事务时,此时就会报出MY-010917错误,因此,当出现复制落后问题时,就可能会出现该错误。

解决方法

针对该错误,MySQL官方提供了三种主要的解决方法:

1、使用 GTID_SUBSETTED 这个参数来替换需要执行的事务。这是MySQL 5.6中引入的一个新特性。它可以替换执行的事务,并跳过已经适用于GTID_EXECUTED的事务。

2、在复制服务器上停止 Slave_SQL_Running线程,这可以跳过已完成的事务,并除去 MY-010917错误发生的原因。

3、清除复制错误,使复制错误可以再次启动,并将从服务器重置到发生此错误之前的状态。

以上三种方法可以根据具体情况选择使用,对于MY-010917错误就能有效解决。一般来说,使用GTID_SUBSETTED是更安全更可行的解决方案。


数据运维技术 » MySQL Error number: MY-010917; Symbol: ER_GTID_EXECUTED_WAS_UPDATED; SQLSTATE: HY000 报错 故障修复 远程处理