GTID を使用したトランザクションのレプリケーション
以下のストアドプロシージャは、RDS for MySQL でグローバルトランザクション識別子 (GTIDs) を使用してトランザクションをレプリケートする方法を制御します。RDS for MySQL を使用した GTID に基づくレプリケーションの詳細については、「GTID ベースレプリケーションを使用する」を参照してください。
mysql.rds_skip_transaction_with_gtid
MySQL DB インスタンスで、指定されたグローバルトランザクション識別子 (GTID) のあるトランザクションのレプリケーションをスキップします。
特定の GTID トランザクションが問題の原因となることが知られている場合、障害復旧のためにこのプロシージャを使用できます。このストアドプロシージャを使用して、問題となるトランザクションをスキップします。問題のあるトランザクションの例には、レプリケーションを無効にしたり、重要なデータを削除したり、DB インスタンスを利用不可にするトランザクションが含まれます。
構文
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 バージョンでサポートされています。
例
次の例では、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 DB インスタンスからのレプリケーションを開始し、指定したグローバルトランザクション識別子 (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 バージョンでサポートされています。
このプロシージャは、災害対策用の遅延レプリケーションで使用できます。遅延レプリケーションを設定している場合は、このプロシージャを使用して、遅延したリードレプリカへの変更を災害発生直前の時点までロールフォワードできます。このプロシージャでのレプリケーションが停止したら、「リードレプリカをスタンドアロン DB インスタンスに昇格させる」の手順に従ってリードレプリカを新しいプライマリ DB インスタンスに昇格させることができます。
次のストアドプロシージャを使用して遅延レプリケーションを設定できます。
gtid
パラメータで指定したトランザクションがレプリカによって既に実行されている場合、レプリケーションは即座に停止します。
例
次の例では、レプリケーションをスタートし、GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
に達するまで変更をレプリケートします。
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');