在MySQL中,errant GTID(错误GTID)是指在从库上存在但在主库上不存在的GTID。
这通常是由于在从库上执行了不应存在的事务或在主库上未能正确复制的事务所导致的。
GTID_5">1.产生errant GTID的原因
- 手动在从库上执行事务:如果在从库上手动执行了事务,这些事务的GTID不会存在于主库上,从而导致errant GTID。
- 主库和从库之间的GTID不一致:由于配置错误或其他原因,主库和从库之间的GTID集合可能不一致,从而导致errant GTID。
GTID_10">2.检查errant GTID
要检查从库上的errant GTID,可以使用以下步骤:
查看从库的Executed_Gtid_Set:
SHOW SLAVE STATUS\G
查看主库的Executed_Gtid_Set:
SHOW MASTER STATUS\G
比较主库和从库的Executed_Gtid_Set:
从库的Executed_Gtid_Set中存在但不在主库的Executed_Gtid_Set中的GTID即为errant GTID。
GTID_23">3.处理errant GTID
处理errant GTID的方法包括以下3种方式。
GTID_25">方式一 忽略errant GTID
如果确定errant GTID不会影响数据一致性,可以选择忽略这些GTID。
方式二 重置从库
如果errant GTID导致数据不一致,可以考虑重置从库并重新进行数据同步。
RESET SLAVE;
方式三 注入空事务
在主库上注入与errant GTID对应的空事务,使主库和从库的GTID集合一致。
SET GTID_NEXT='errant-gtid';
BEGIN; COMMIT;
SET GTID_NEXT='AUTOMATIC';
具体选择哪种方式,需要根据数据完整性要求进行选择。