为具有只读副本的 MySQL 数据库实例禁用基于 GTID 的复制
您可以为 一个具有只读副本的 MySQL 数据库实例。
为 具有只读副本的 MySQL 数据库实例禁用基于 GTID 的复制
-
在每个只读副本上,运行以下过程:
MySQL 8.4 及更高的主要版本
CALL mysql.rds_set_source_auto_position(0);MySQL 8.0 及更低的主要版本
CALL mysql.rds_set_master_auto_position(0); -
将
gtid_mode重置为ON_PERMISSIVE。-
确保与 MySQL 数据库实例和每个只读副本关联的参数组将
gtid_mode设置为ON_PERMISSIVE。有关使用参数组设置配置参数的更多信息,请参阅 Amazon RDS 的参数组。
-
重新引导 MySQL 数据库实例和每个只读副本。有关重新引导的更多信息,请参阅重启中的数据库实例。
-
-
将
gtid_mode重置为OFF_PERMISSIVE。-
确保与 MySQL 数据库实例和每个只读副本关联的参数组将
gtid_mode设置为OFF_PERMISSIVE。 -
重新引导 MySQL 数据库实例和每个只读副本。
-
-
等待在所有只读副本上应用所有 GTID 事务。要检查是否应用了这些事务,请按以下步骤操作:
-
在 MySQL 数据库实例上,运行以下命令:
MySQL 8.4
SHOW BINARY LOG STATUSMySQL 5.7 和 8.0
SHOW MASTER STATUS您的输出应类似于以下输出。
File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------记下输出中的文件和位置。
-
在每个只读副本上,使用上一步中的源实例上的文件和位置信息运行以下查询:
MySQL 8.4 和 MySQL 8.0.26 及更高的 MySQL 8.0 版本
SELECT SOURCE_POS_WAIT('file',position);MySQL 5.7
SELECT MASTER_POS_WAIT('file',position);例如,如果文件名是
mysql-bin-changelog.000031并且位置是107,请运行以下语句:MySQL 8.4 和 MySQL 8.0.26 及更高的 MySQL 8.0 版本
SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);MySQL 5.7
SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
-
-
重置 GTID 参数以禁用基于 GTID 的复制。
-
确保与 MySQL 数据库实例和每个只读副本关联的参数组具有以下参数设置:
-
gtid_mode–OFF -
enforce_gtid_consistency–OFF
-
-
重新引导 MySQL 数据库实例和每个只读副本。
-