使用 GTID 复制事务
以下存储过程控制如何使用 RDS for MySQL 中的全局事务标识符(GTID)复制事务。有关根据 RDS for MySQL 中的 GTID 进行复制的更多信息,请参阅使用基于 GTID 的复制。
mysql.rds_skip_transaction_with_gtid
在 MySQL 数据库实例上跳过复制具有指定全局事务标识符 (GTID) 的事务。
在已知特定 GTID 事务导致问题时,您可以使用该过程进行灾难恢复。请使用该存储过程跳过有问题的事务。有问题的事务示例包括禁用复制、删除重要数据或导致数据库实例变得不可用的事务。
语法
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
参数
-
gtid_to_skip
-
要跳过的复制事务的 GTID。
使用说明
主用户必须运行 mysql.rds_skip_transaction_with_gtid
过程。
所有 RDS for MySQL 5.7 版本和 RDS for MySQL 8.0.26 及更高的 8.0.x 版本均支持此过程。
示例
以下示例将跳过复制具有 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
的事务。
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_start_replication_until_gtid
从 RDS for MySQL 数据库实例中启动复制,并在指定的全局事务标识符(GTID)后面立即停止复制。
语法
CALL mysql.rds_start_replication_until_gtid(
gtid
);
参数
-
gtid
-
停止复制前的 GTID。
使用说明
主用户必须运行 mysql.rds_start_replication_until_gtid
过程。
所有 RDS for MySQL 5.7 版本和 RDS for MySQL 8.0.26 及更高的 8.0.x 版本均支持此过程。
您可以对延迟复制使用该过程以进行灾难恢复。如果您已配置延迟复制,则可以使用该过程来将延迟只读副本的更改向前滚动到灾难之前的时间。在该过程停止复制后,您可以通过使用将只读副本提升为独立的数据库实例中的说明,将只读副本提升为新的主数据库实例。
您可以使用以下存储过程配置延迟复制:
在 gtid
参数指定副本已运行的事务时,将会立即停止复制。
示例
以下示例启动复制并复制更改,直至到达 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
。
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');