MySQL Error number: 4040; Symbol: ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID; SQLSTATE: HY000

文档解释

Error number: 4040; Symbol: ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID; SQLSTATE: HY000

Message: Replication ‘%s’ is configured with ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = where the UUID value is equal to the group_replication_view_change_uuid

ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID (4040)

错误说明:

ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID错误是MySQL Server所抛出的一条错误消息,表示”将匿名 GTID UUID映射到相同的MySQL变更视图(修改截至)UUID”。这意味着一个GTID UUID被映射到一个已经存在的MySQL变更视图UUID时会发生此错误。

常见案例:

当一个MySQL实例使用GTID的时候,在执行任何DML操作的时候都会向数据库发送一个全局事务ID(GTID),该GTID会被记录到数据库日志中。如果一个含有未提交事务的MySQL实例宕机,可能会出现ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID错误,因为在MySQL变更视图中将匿名GTID UUID映射成与已配置GTID UUID相同的错误将会被触发。

解决方法:

解决ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID错误最好的方法是将实例上的未提交的事务进行回滚,以确保一致性。如果你无法回滚未提交的事务,可以尝试将MySQL变更视图中的无效或失效的GTID UUID移除,从而使MySQL变更视图UUID与GTID UUID不相同。

要完成这项工作,首先需要在MySQL实例中执行flushing操作,即使用flush logs命令进行日志刷新,以便确定哪些GTID UUID具有有效连接,哪些不具有有效连接,即可以用来确定哪些操作可以有效执行在MySQL实例上,哪些操作是无效的。然后,MySQL变更视图UUID可以使用SHOW MASTER STATUS语句查看,并且可以使用DROP CHANGE MASTER ID命令移除GTID UUID,从而避免ER_ANONYMOUS_TO_GTID_UUID_SAME_AS_VIEW_CHANGE_UUID错误。

你可能感兴趣的