MySQL 8.4 版本说明
本节介绍如何监控复制拓扑并验证所有匿名事务是否已复制。这在在线更改复制模式时非常有用,因为您可以验证更改为 GTID 事务是否安全。
有几种方法可以等待事务复制
最简单的方法,无论您的拓扑如何,但依赖于时间,如下所示:如果您确定副本从未滞后超过 N
秒,请等待您认为对您的部署安全的超过 N
秒的任何时间段。
更安全的方法,因为它不依赖于时间,如果您只有一个源和一个或多个副本,请执行以下两个步骤
在源上,执行此语句
SHOW BINARY LOG STATUS;
记下输出中
File
和Position
列中显示的值。在每个副本上,使用源中的文件和位置信息来执行此处显示的语句
SELECT SOURCE_POS_WAIT(file, position);
如果您有一个源和多个级别的副本(即副本的副本),请从源开始,在每个级别重复第二步,然后在所有副本上,然后在这些副本的所有副本上,依此类推。
如果您使用循环复制拓扑,其中多个服务器可能具有写入客户端,请对每个源-副本连接执行第二步,直到您完成整个循环。重复此过程,以便您完成整个循环两次。
例如,如果有三个服务器 A、B 和 C,以循环方式复制,以便 A 复制到 B,B 复制到 C,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。