16.4.1.32 复制和事务不一致

从中继日志执行的事务 Sequences 不一致可能会发生,具体取决于您的复制配置。本节说明如何避免不一致并解决它们引起的任何问题。

可能存在以下类型的不一致:

以下情况与半应用的事务,差距和源二进制日志位置滞后的存在有关:

全局变量rpl_stop_slave_timeout与停止复制线程的过程无关。它只会使发出STOP SLAVE的 Client 端返回到 Client 端,但是复制线程 continue 尝试停止。

如果复制通道存在间隙,则会导致以下后果:

在将转储应用到另一台服务器上并启动复制线程之后,将再次复制该位置之后出现的事务。请注意,如果启用了 GTID,这是无害的(但是,在这种情况下,不建议使用--dump-slave)。

如果复制通道具有源二进制日志位置滞后但没有间隙,则上述情况 2 至 5 适用,但情况 1 不适用。

源二进制日志位置信息以二进制格式保存在内部 tablemysql.slave_worker_info中。 开始从[SQL_THREAD]始终会查询此信息,以便仅应用正确的 Transaction。即使在START SLAVE之前将slave_parallel_workers更改为 0,甚至将START SLAVEUNTIL子句一起使用,也是如此。 从开始直到 SQL_AFTER_MTS_GAPS仅根据需要应用尽可能多的事务以填补空白。如果START SLAVEUNTIL子句一起使用,告诉它在耗尽所有间隙之前停止运行,则它将留下剩余的间隙。

Warning

RESET SLAVE删除中继日志并重置复制位置。因此,在具有间隙的副本上发出RESET SLAVE意味着该副本会丢失有关间隙的任何信息,而无需校正间隙。

首页