真实往replica注入一个空GTID事务,再让source自然产生同一个GTID号的真实数据,看自动定位机制会不会静默丢数据。
代码(在replica上)STOP REPLICA; SET GTID_NEXT='ea38af54-...:418'; BEGIN; COMMIT; -- 真实一个空事务,只是为了标记这个GTID"已执行" SET GTID_NEXT='AUTOMATIC';
代码(在source上)INSERT INTO shop.orders (item, qty) VALUES ('elderberry', 1); -- source自动分配的GTID号,真实凑巧也是:418(因为这是source上的第418个事务)
source真实查询: 1 apple 2 banana 3 cherry 4 date 5 elderberry (5行) replica真实查询: 1 apple 2 banana 3 cherry 4 date (4行,永久卡住!)
Replica_IO_Running: Yes Replica_SQL_Running: Yes Last_Error: (空)
每一步都是本文上面用真实两节点复制环境跑出来的原始结果。
SET GTID_NEXT + SOURCE_AUTO_POSITION=1