Documentation Home

17.1.4.4 验证匿名交易的复制

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

有几种可能的方法来等待事务复制:

最简单的方法,无论您的拓扑如何,但都依赖于时间,如下所示:如果您确定副本永远不会滞后超过 N 秒,只需等待 N 秒多一点。或等待一天,或您认为对部署安全的任何时间段。

一种不依赖于时间的更安全的方法:如果您只有一个包含一个或多个副本的源,请执行以下操作:

  1. 在源上,执行:

    SHOW MASTER STATUS;

    记下FilePosition列中的值。

  2. 在每个副本上,使用来自源的文件和位置信息来执行:

    SELECT MASTER_POS_WAIT(file, position);
    
    Or from MySQL 8.0.26:
    SELECT SOURCE_POS_WAIT(file, position);

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

如果您使用循环复制拓扑,其中多个服务器可能有写入客户端,请对每个源副本连接执行步骤 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。