MySQL Error number: MY-010034; Symbol: ER_CHANGED_ENFORCE_GTID_CONSISTENCY; SQLSTATE: HY000

文档解释

Error number: MY-010034; Symbol: ER_CHANGED_ENFORCE_GTID_CONSISTENCY; SQLSTATE: HY000

Message: Changed ENFORCE_GTID_CONSISTENCY from %s to %s.

Error Number:MY-010034; Symbol: ER_CHANGED_ENFORCE_GTID_CONSISTENCY; SQLSTATE: HY000

错误说明:

MY-010034(ER_CHANGED_ENFORCE_GTID_CONSISTENCY)是MySQL的一个错误,该错误的SQLSTATE为HY000。这个错误是当两个MySQL实例进行数据复制时出现的,其一是GTID集合同步不一致所引起的,主要原因是在复制过程中更改了GTID集合发生了不一致,或者是源头实例及目标实例在具有相同启用GTID的情况之下存在不一致的JSONUUID,导致GTID集合不一致。这个错误的code值在MySQL服务器的errormessage.txt 文件中定义为:The CHANGE MASTER TO MASTER_AUTO_POSITION = 1

,enforce_gtid_consistency variable was changed by a client that does not possess the SUPER privilege and binary logging is enabled(GTID集合被一个没有超级特权的客户端更改,而且二进制记录已经启用)。

常见案例

GTID一致性是MySQL复制过程中需要注意的数据一致性问题,当在复制过程中更改了GTID集合发生了不一致,或者是源头实例及目标实例在具有相同启用GTID的情况之下存在不一致的JSONUUID时,就可能会出现这个错误。

解决方法:

1. 如果采用GTID进行复制,需要使GTID集合在源头实例及目标实例的数据一致:重启数据库,更新GTID集合,即可解决此问题。

2. 检查源实例及目标实例的JSONUUID是否一致:检查源实例和目标实例的JSONUUID,如果不一致,则需要将源实例或目标实例的JSONUUID更改为一致,重新开启复制即可。

3. 使用命令检查GTID集合是否一致:可以使用show slave statusG命令来检查源实例及目标实例的GTID集合是否一致,如果不一致,可以通过以上两种方法来解决此问题。在重启复制之前,为了确保不会因数据库重启而引起数据丢失,请先在源实例或目标实例上执行FLUSH TABLES WITH READ LOCK,然后在复制前获取GTID集合,这样就可以在重启数据库之后恢复到原始状态,以防止数据丢失。

最后,当出现ER_CHANGED_ENFORCE_GTID_CONSISTENCY错误时,最好要使用MySQL官方提供的方法来检查JSONUUID,GTID集合是否正确,及时处理此类问题,避免长时间无法复制。

你可能感兴趣的