GTID を使用したトランザクションのレプリケーション
以下のストアドプロシージャは、Aurora MySQL でグローバルトランザクション識別子 (GTID) を使用してトランザクションをレプリケートする方法を制御します。Aurora MySQL を使用して、GTID に基づきレプリケーションを使用する方法については、「GTID ベースレプリケーションを使用する」を参照してください。
トピック
mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL バージョン 3)
を設定します。ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
のオプションCHANGE REPLICATION SOURCE TO
表示されます。これにより、レプリケーションチャネルが GTID を持たないレプリケートされたトランザクションに割り当てられます。このように、GTID ベースのレプリケーションを使用しないソースから、使用するレプリカに対してバイナリログレプリケーションを実行できます。詳細については、「CHANGE REPLICATION SOURCE TO Statement」を参照してください。
構文
CALL mysql.rds_assign_gtids_to_anonymous_transactions(
gtid_option
);
パラメータ
-
gtid_option
-
文字列値。指定できる値は次のとおりです。
OFF
,LOCAL
、または指定された UUID。
使用に関する注意事項
このプロシージャは、コミュニティMySQLでステートメントの発行と同じ効果がありますCHANGE REPLICATION SOURCE TO
ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS =
。gtid_option
GTID をON
に変える必要がありますにとってgtid_option
または設定されるLOCAL
または特定の UUIDに設定されます。
デフォルトは OFF
であり、この機能が使用されないことを意味します。
LOCAL
レプリカ独自の UUID を含む GTID を割り当てます (server_uuid
設定)。
UUID であるパラメータを渡すと、指定された UUID を含む GTID が割り当てられます。server_uuid
レプリケーションソースサーバーの設定。
例
この特徴をオフにするには、次の手順を実行します:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)
レプリカ独自の UUID を使用するには、次の手順を実行します:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)
指定した UUID を使用するには、次の手順を実行します:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)
mysql.rds_gtid_purged (Aurora MySQL バージョン 3)
システム変数 gtid_purged
のグローバル値を特定のグローバルトランザクション識別子 (GTID) セットに設定します。gtid_purged
システム変数は、サーバー上でコミットされたが、サーバー上のどのバイナリログファイルにも存在しないすべてのトランザクションの GTID で構成される GTID セットです。
MySQL 8.0 との互換性を保つため、gtid_purged
の値を設定する方法が 2 つあります。
-
gtid_purged
の値を、指定した GTID セットに置き換えます。 -
指定した GTID セットを
gtid_purged
が既に含んでいる GTID セットに追加します。
構文
gtid_purged
の値を、指定した GTID セットに置き換えるには
CALL mysql.rds_gtid_purged (
gtid_set
);
gtid_purged
の値を、指定した GTID セットに追加するには
CALL mysql.rds_gtid_purged (+
gtid_set
);
パラメータ
gtid_set
-
gtid_set
の値は、gtid_purged
の現在値のスーパーセットでなければならず、gtid_subtract(gtid_executed,gtid_purged)
と交差することはできません。つまり、新しい GTID セットには、gtid_purged
に既に存在していた GTID がすべて含まれている必要がありますが、まだパージされていなかったgtid_executed
内の GTID を含むことはできません。また、gtid_set
パラメータは、グローバルgtid_owned
セットにある GTID、サーバー上で現在処理中のトランザクションの GTID を含むことはできません。
使用に関する注意事項
マスターユーザーが mysql.rds_gtid_purged
を実行する必要があります。
この手順は Aurora MySQL バージョン 3.04 以降でサポートされています。
例
次の例では、GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
を gtid_purged
グローバル変数に代入します。
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_skip_transaction_with_gtid (Aurora MySQL バージョン 2 および 3)
Aurora プライマリインスタンスで、指定されたグローバルトランザクション識別子 (GTID) のあるトランザクションのレプリケーションをスキップします。
特定の GTID トランザクションが問題の原因となることが知られている場合、障害復旧のためにこのプロシージャを使用できます。このストアドプロシージャを使用して、問題となるトランザクションをスキップします。問題のあるトランザクションの例には、レプリケーションを無効にしたり、重要なデータを削除したり、DB インスタンスを利用不可にするトランザクションが含まれます。
構文
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
パラメータ
-
gtid_to_skip
-
スキップするレプリケーショントランザクションの GTID。
使用に関する注意事項
マスターユーザーが mysql.rds_skip_transaction_with_gtid
を実行する必要があります。
この手順は Aurora MySQL バージョン 2 および 3 でサポートされています。
例
次の例では、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 (Aurora MySQL バージョン 3)
Aurora MySQL DB クラスターからのレプリケーションを開始し、指定したグローバルトランザクション識別子 (GTID) の後でレプリケーションを停止します。
構文
CALL mysql.rds_start_replication_until_gtid(
gtid
);
パラメータ
-
gtid
-
レプリケーションがその後で停止する GTID。
使用に関する注意事項
マスターユーザーが mysql.rds_start_replication_until_gtid
を実行する必要があります。
この手順は Aurora MySQL バージョン 3.04 以降でサポートされています。
mysql.rds_start_replication_until_gtid
ストアドプロシージャは、以下を含むマネージドレプリケーションではサポートされていません。
gtid
パラメータで指定したトランザクションがレプリカによって既に実行されている場合、レプリケーションは即座に停止します。
例
次の例では、レプリケーションをスタートし、GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
に達するまで変更をレプリケートします。
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');