16.1.4.4 验证匿名 Transaction 的复制
本节说明如何监视复制拓扑并验证是否已复制所有匿名事务。在线更改复制模式时,这很有用,因为您可以验证更改为 GTID 事务是安全的。
有几种方法可以 await 事务复制:
最简单的方法,不管您的拓扑如何,都可以使用,但取决于时间安排,如下所示:如果您确定副本的延迟永远不会超过 N 秒,则只需 await 超过 N 秒即可。或 await 一天或您认为对部署安全的任何时间段。
从某种意义上讲,它是一种更安全的方法,它不依赖于时序:如果只有一个或多个副本的源,请执行以下操作:
- 在源代码上,执行:
SHOW MASTER STATUS;
记下File
和Position
列中的值。
- 在每个副本上,使用源中的文件和位置信息执行:
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.