16.1.4.3 停用在线 GTIDTransaction

本节介绍如何在已联机的服务器上禁用 GTID 事务。此过程不需要使服务器脱机,并且适合在 Producing 使用。但是,如果在禁用 GTIDs 模式时可以使服务器脱机,则此过程会更容易。

该过程类似于在服务器联机时启用 GTID 事务,但是步骤相反。唯一不同的是您 await 记录的事务复制的时间点。

在开始之前,请确保服务器满足以下前提条件:

STOP SLAVE [FOR CHANNEL 'channel'];
CHANGE MASTER TO MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = file, \
MASTER_LOG_POS = position [FOR CHANNEL 'channel'];
START SLAVE [FOR CHANNEL 'channel'];
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
SELECT @@GLOBAL.GTID_OWNED;

在副本上,从理论上讲,它有可能为空然后又为非空。这不是问题,只需将其清空一次即可。

例如,在完成步骤 5 之后,您可以在进行备份的服务器上执行FLUSH LOGS。然后,要么明确地进行备份,要么 await 您可能设置的任何定期备份例程的下一个迭代。

理想情况下,await 服务器清除第 5 步完成时存在的所有二进制日志。此外,请 await 第 5 步到期之前进行的所有备份。

Important

这是此过程中的重要一点。重要的是要理解包含 GTID 事务的日志不能在下一步之后使用。在 continue 之前,必须确保 GTID 事务在拓扑中的任何地方都不存在。

SET @@GLOBAL.GTID_MODE = OFF;

如果您要设置enforce_gtid_consistency=OFF,则可以立即进行设置。设置之后,您应该将enforce_gtid_consistency=OFF添加到您的配置文件中。

如果要降级到 MySQL 的较早版本,可以立即使用正常的降级过程进行降级。

首页