16.1.4.4 验证匿名 Transaction 的复制

本节说明如何监视复制拓扑并验证是否已复制所有匿名事务。在线更改复制模式时,这很有用,因为您可以验证更改为 GTID 事务是安全的。

有几种方法可以 await 事务复制:

最简单的方法,不管您的拓扑如何,都可以使用,但取决于时间安排,如下所示:如果您确定副本的延迟永远不会超过 N 秒,则只需 await 超过 N 秒即可。或 await 一天或您认为对部署安全的任何时间段。

从某种意义上讲,它是一种更安全的方法,它不依赖于时序:如果只有一个或多个副本的源,请执行以下操作:

  • 在源代码上,执行:
SHOW MASTER STATUS;

记下FilePosition列中的值。

  • 在每个副本上,使用源中的文件和位置信息执行:
SELECT MASTER_POS_WAIT(file, position);

如果您有一个源并且有多个副本级别,或者换句话说,您有副本的副本,请在每个级别上重复步骤 2,从源开始,然后是所有直接副本,然后是副本的所有副本,依此类推。

如果使用多个服务器可能具有写入 Client 端的循环复制拓扑,请对每个源副本连接执行步骤 2,直到完成整个循环为止。重复整个过程,以便完整圈两次

例如,假设您有三个服务器 A,B 和 C,它们以一个圆圈复制,从而使 A-> B-> C->A。然后,该过程为:

  • 在 A 上执行步骤 1,在 B 上执行步骤 2.

  • 在 B 上执行步骤 1,在 C 上执行步骤 2.

  • 在 C 上执行步骤 1,在 A 上执行步骤 2.

  • 在 A 上执行步骤 1,在 B 上执行步骤 2.

  • 在 B 上执行步骤 1,在 C 上执行步骤 2.

  • 在 C 上执行步骤 1,在 A 上执行步骤 2.