为具有只读副本的 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 STATUS
MySQL 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 数据库实例和每个只读副本。
-