GTID を使用したトランザクションのレプリケーション - Amazon Aurora

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」を参照してください。そしてGTIDs のないソースから GTIDs を使用したレプリカへのレプリケーションMySQL リファレンスマニュアルを参照してください。

構文

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');