如果您在MySQL 5.6中启用了GTID,并且想要降级到不支持GTID的MySQL版本,则必须执行此过程以在降级之前禁用GTID。在MySQL 5.6中,必须使服务器脱机才能禁用GTID。
在每个从站上,通过运行以下语句来禁用自动定位:
STOP SLAVE;
CHANGE MASTER TO MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = file,
MASTER_LOG_POS = position;
START SLAVE;
在每台服务器上,通过运行以下语句停止更新:
SET @@GLOBAL.READ_ONLY = ON;
等待所有正在进行的事务提交或回滚。然后,根据您的部署,等待一个安全的时间段,以将任何二进制日志中当前存在的所有事务复制到所有从属服务器。在继续之前,确保所有从站都已处理所有更新,这一点非常重要。
如果将二进制日志用于复制以外的其他用途,例如进行时间点备份和还原,请等到不需要包含GTID事务的旧二进制日志。理想情况下,请等待服务器清除所有二进制日志,然后等待任何现有备份到期。
重要
重要的是要理解,包含GTID事务的日志不能在禁用GTID的服务器上使用。在继续之前,必须确保GTID事务在拓扑中的任何地方都不存在。
如下所示, 使用mysqladmin停止每个服务器,其中username是具有足够特权关闭服务器的MySQL用户的用户名:
shell> mysqladmin -uusername -p shutdown
然后在提示时提供该用户的密码。
在每个服务器上设置 gtid_mode=OFF和 enforce_gtid_consistency=OFF 在my.cnf。
使用mysqld_safe或另一个 mysqld启动脚本以只读模式重新启动每个服务器 ,并–read_only=ON在命令行上指定选项。以只读模式启动服务器可防止在任何服务器上执行不必要或意外的更新。
此时,请进行新的备份,以免没有可用的备份。由于您已禁用GTID,因此在禁用GTID之前创建的现有备份将无法再在这些服务器上使用。例如,您可以FLUSH LOGS在进行备份的服务器上执行。然后,要么明确地进行备份,要么等待您可能已设置的任何定期备份例程的下一个迭代。
在每台服务器上,通过运行以下语句重新启用更新:
SET @@GLOBAL.READ_ONLY = OFF;
如果要降级到MySQL的较早版本,可以立即使用正常的降级过程进行降级。




