MySQL 主从GTID 不一致问题一则

476 阅读1分钟

1. 问题描述

mysql主从gtid做主从时,一日巡检时发现,从节点gtid比主节点多了两个,登录从节点后,发现从节点比主节点多建了一个空库所致。 正确做法是通过binlog找到这两个gitd具体的操作,确认对主节点有无影响,以防切换时造成失败,但时日已长,对应binlog已经无法找到,做了简单的数据校验后,我们做一下跳过处理。

从节点:

show slave status;
Executed_Gtid_Set
099aaca5-3bb4-11ec-b721-e454e89c8d8e:1-82832895,
31929fba-3bac-11ec-a644-e454e89c8d8e:1-18212129

主节点:

show master status;
Executed_Gtid_Set
099aaca5-3bb4-11ec-b721-e454e89c8d8e:1-82832893,
31929fba-3bac-11ec-a644-e454e89c8d8e:1-18212129

可以看到从节点比主机点多出 099aaca5-3bb4-11ec-b721-e454e89c8d8e:82832894099aaca5-3bb4-11ec-b721-e454e89c8d8e:82832895 这两个gtid;

2. 操作步骤

进行跳过

set session gtid_next = '099aaca5-3bb4-11ec-b721-e454e89c8d8e:82832894';
begin;
commit;
set session gtid_next = AUTOMATIC;
set session gtid_next = '099aaca5-3bb4-11ec-b721-e454e89c8d8e:82832895';
begin;
commit;
set session gtid_next = AUTOMATIC;

一些补充: gtid由servier_uuid+transactionID构成(show variables like 'server_uuid'),而serverid又由配置文件data_dir/auto.cnf自动生成,文件被删除后,会重新生成新的uuid,一般不建议手动变更..

参考文档:

dev.mysql.com/doc/refman/…