Aurora MySQL グローバルデータベースで書き込み転送を使用する - Amazon Aurora

Aurora MySQL グローバルデータベースで書き込み転送を使用する

Aurora MySQL での書き込み転送を利用できるリージョンとバージョン

書き込み転送は、Aurora MySQL 2.08.1 以降のバージョンで、Aurora MySQL ベースのグローバルデータベースが利用可能なすべてのリージョンでサポートされています。

Aurora MySQL グローバルデータベースを利用できるバージョンとリージョンについては、「Aurora MySQL を使用した Aurora グローバルデータベース」を参照してください。

Aurora MySQL での書き込み転送の有効化

デフォルトでは、セカンダリクラスターを Aurora Global Database に追加すると、書き込み転送は有効になりません。

AWS Management Console を使用して書き込み転送を有効にするには、グローバルデータベースのリージョンを追加するときに、[リードレプリカの書き込み転送] の [グローバル書き込み転送を有効にする] チェックボックスをオンにします。既存のセカンダリクラスターの場合、クラスターを [グローバル書き込み転送を有効にする] に変更します。書き込み転送をオフにするには、リージョンの追加時またはセカンダリクラスターの変更時に、[グローバル書き込み転送を有効にする] チェックボックスをオフにします。

AWS CLI を使用して書き込み転送を有効にするには、--enable-global-write-forwarding オプションを使用します。このオプションは、create-db-cluster コマンドを使用して新しいセカンダリクラスターを作成するときに機能します。modify-db-cluster コマンドを使用して、既存のセカンダリクラスターを変更する場合にも機能します。グローバルデータベースでは、書き込み転送をサポートする Aurora バージョンを使用する必要があります。これらの同じ CLI コマンドで --no-enable-global-write-forwarding オプションを使用すると、書き込み転送をオフにすることができます。

Amazon RDS API を使用して書き込み転送を有効にするには、EnableGlobalWriteForwarding パラメータを true に設定します。このパラメータは、CreateDBCluster オペレーションを使用して新しいセカンダリクラスターを作成するときに機能します。この操作は、ModifyDBCluster オペレーションを使用して既存のセカンダリクラスターを変更する場合にも機能します。グローバルデータベースでは、書き込み転送をサポートする Aurora バージョンを使用する必要があります。EnableGlobalWriteForwarding パラメータを false に設定することで、書き込み転送をオフにすることができます。

注記

データベースセッションで書き込み転送を使用するには、aurora_replica_read_consistency 構成パラメータの設定を指定します。書き込み転送機能を使用するすべてのセッションでこれを行います。このパラメータの詳細については、「Aurora MySQL での書き込み転送の分離と整合性」を参照してください。

RDS プロキシ機能は aurora_replica_read_consistency 変数の SESSION 値をサポートしていません。この値を設定すると、予期しない動作が発生する可能性があります。

次の CLI の例は、書き込み転送を有効または無効にして Aurora Global Database を設定する方法を示しています。強調表示された項目は、Aurora Global Database のインフラストラクチャをセットアップするときに指定し、一貫性を保つために重要なコマンドとオプションを表しています。

次の例では、書き込み転送が有効になっている Aurora Global Database 、プライマリクラスター、およびセカンダリクラスターを作成します。ユーザー名、パスワード、プライマリとセカンダリの AWS リージョンは、自分で選択したものに置き換えます。

# Create overall global database. aws rds create-global-cluster --global-cluster-identifier write-forwarding-test \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-east-1 # Create primary cluster, in the same AWS Region as the global database. aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \ --db-cluster-identifier write-forwarding-test-cluster-1 \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --master-username user_name --master-user-password password \ --region us-east-1 aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-1 \ --db-instance-identifier write-forwarding-test-cluster-1-instance-1 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-east-1 aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-1 \ --db-instance-identifier write-forwarding-test-cluster-1-instance-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-east-1 # Create secondary cluster, in a different AWS Region than the global database, # with write forwarding enabled. aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \ --db-cluster-identifier write-forwarding-test-cluster-2 \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-east-2 \ --enable-global-write-forwarding aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-1 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-east-2 aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-east-2

次の例は、前の例から続きます。書き込み転送が有効になっていないセカンダリクラスターを作成し、書き込み転送を有効にします。この例が終了すると、グローバルデータベース内のすべてのセカンダリクラスターで書き込み転送が有効になります。

# Create secondary cluster, in a different AWS Region than the global database, # without write forwarding enabled. aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \ --db-cluster-identifier write-forwarding-test-cluster-2 \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-west-1 aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-1 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-west-1 aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \ --db-instance-identifier write-forwarding-test-cluster-2-instance-2 \ --db-instance-class db.r5.large \ --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \ --region us-west-1 aws rds modify-db-cluster --db-cluster-identifier write-forwarding-test-cluster-2 \ --region us-east-2 \ --enable-global-write-forwarding

セカンダリクラスターで Aurora MySQL での書き込み転送が有効になっているかどうかの確認

セカンダリクラスターからの書き込み転送を使用できるかどうかを判断するには、クラスターに属性 "GlobalWriteForwardingStatus": "enabled" があるかどうかを確認します。

AWS Management Console で、クラスターの詳細ページの [設定] タブに、[グローバルリードレプリカの書き込み転送] のステータスが [有効] と表示されます。

すべてのクラスターのグローバル書き込み転送設定のステータスを表示するには、次の AWS CLI コマンドを実行します。

セカンダリクラスターには、書き込み転送がオンかオフかを示す値 "enabled" または "disabled" が表示されます。値 null は、そのクラスターで書き込み転送が使用できないことを示します。クラスターがグローバルデータベースの一部ではないか、セカンダリクラスターではなくプライマリクラスターです。書き込み転送をオンまたはオフにする処理中の場合、値は "enabling" または "disabling" になります。

aws rds describe-db-clusters \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,GlobalWriteForwardingStatus:GlobalWriteForwardingStatus}' [ { "GlobalWriteForwardingStatus": "enabled", "DBClusterIdentifier": "aurora-write-forwarding-test-replica-1" }, { "GlobalWriteForwardingStatus": "disabled", "DBClusterIdentifier": "aurora-write-forwarding-test-replica-2" }, { "GlobalWriteForwardingStatus": null, "DBClusterIdentifier": "non-global-cluster" } ]

グローバル書き込み転送が有効になっているすべてのセカンダリクラスターを検索するには、次のコマンドを実行します。このコマンドは、クラスターのリーダーエンドポイントも返します。Aurora Global Database でセカンダリからプライマリへの書き込み転送を使用するときは、セカンダリクラスターのリーダーエンドポイントを使用します。

aws rds describe-db-clusters --query 'DBClusters[].{DBClusterIdentifier:DBClusterIdentifier,GlobalWriteForwardingStatus:GlobalWriteForwardingStatus,ReaderEndpoint:ReaderEndpoint} | [?GlobalWriteForwardingStatus == `enabled`]' [ { "GlobalWriteForwardingStatus": "enabled", "ReaderEndpoint": "aurora-write-forwarding-test-replica-1.cluster-ro-cnpexample.us-west-2.rds.amazonaws.com", "DBClusterIdentifier": "aurora-write-forwarding-test-replica-1" } ]

Aurora MySQL での書き込み転送とアプリケーションおよび SQL の互換性

書き込み転送では、次の種類の SQL ステートメントを使用できます。

  • INSERTDELETE、および UPDATE などのデータ操作言語 (DML) ステートメント。書き込み転送で使用できるこれらのステートメントのプロパティには、以下で説明するように、いくつかの制限があります。

  • SELECT ... LOCK IN SHARE MODESELECT FOR UPDATE ステートメント。

  • PREPAREEXECUTE ステートメント。

特定のステートメントは、書き込み転送機能を持つグローバルデータベースで使用すると、許可されないか、または古い結果を生成する可能性があります。したがって、セカンダリクラスターで EnableGlobalWriteForwarding の設定はデフォルトではオフになっています。オンにする前に、アプリケーションコードがこれらの制限の影響を受けていないことを確認してください。

書き込み転送で使用する SQL ステートメントには、次の制限が適用されます。場合によっては、書き込み転送がクラスターレベルで有効になっているセカンダリクラスターでステートメントを使用できます。この方法は、aurora_replica_read_consistency 設定パラメータによってセッション内で書き込み転送がオンになっていない場合に機能します。書き込み転送のために許可されていないステートメントを使用しようとすると、次の形式のエラーメッセージが表示されます。

ERROR 1235 (42000): This version of MySQL doesn't yet support 'operation with write forwarding'.
データ定義言語 (DDL)

プライマリクラスターに接続して、DDL ステートメントを実行します。リーダー DB インスタンスからは実行できません。

テンポラリテーブルのデータを使用した永続テーブルの更新

書き込み転送が有効になっているセカンダリクラスターでは、テンポラリテーブルを使用できます。ただし、ステートメントがテンポラリテーブルを参照している場合は、DML ステートメントを使用して永続テーブルを変更することはできません。例えば、テンポラリテーブルからデータを取る INSERT ... SELECT ステートメントを使用することはできません。テンポラリテーブルはセカンダリクラスターに存在し、プライマリクラスターでステートメントを実行するときには使用できません。

XA トランザクション

セッション内で書き込み転送が有効になっている場合、セカンダリクラスターで次のステートメントを使用することはできません。これらのステートメントは、書き込み転送が有効になっていないセカンダリクラスター、または aurora_replica_read_consistency 設定が空のセッションで使用できます。セッション内で書き込み転送を有効にする前に、コードでこれらのステートメントが使用されているかどうかを確認してください。

XA {START|BEGIN} xid [JOIN|RESUME] XA END xid [SUSPEND [FOR MIGRATE]] XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER [CONVERT XID]
永続テーブルの LOAD ステートメント

書き込み転送が有効になっているセカンダリクラスターでは、次のステートメントを使用できません。

LOAD DATA INFILE 'data.txt' INTO TABLE t1; LOAD XML LOCAL INFILE 'test.xml' INTO TABLE t1;

セカンダリクラスターのテンポラリテーブルにデータをロードできます。ただし、永続テーブルを参照する LOAD ステートメントは、プライマリクラスターでのみ実行してください。

プラグインステートメント

書き込み転送が有効になっているセカンダリクラスターでは、次のステートメントを使用できません。

INSTALL PLUGIN example SONAME 'ha_example.so'; UNINSTALL PLUGIN example;
SAVEPOINT ステートメント

セッション内で書き込み転送が有効になっている場合、セカンダリクラスターで次のステートメントを使用することはできません。これらのステートメントは、書き込み転送が有効になっていないセカンダリクラスター、または aurora_replica_read_consistency 設定が空白のセッションで使用できます。セッション内で書き込み転送を有効にする前に、コードでこれらのステートメントが使用されているかどうかを確認してください。

SAVEPOINT t1_save; ROLLBACK TO SAVEPOINT t1_save; RELEASE SAVEPOINT t1_save;

Aurora MySQL での書き込み転送の分離と整合性

書き込み転送を使用するセッションでは、REPEATABLE READ 分離レベルのみを使用できます。セカンダリ READ COMMITTED リージョンの読み取り専用クラスターでも AWS 分離レベルを使用できますが、その分離レベルは書き込み転送では機能しません。REPEATABLE READ および READ COMMITTED 分離レベルの詳細については、「Aurora MySQL の分離レベル」を参照してください。

セカンダリクラスターの読み取り整合性の程度を制御できます。読み取り整合性レベルは、一部またはすべての変更がプライマリクラスターからレプリケートされるように、各読み取りオペレーションの前にセカンダリクラスターが実行する待機時間を決定します。読み取り整合性レベルを調整して、セッションから転送されたすべての書き込みオペレーションが、後続のクエリの前にセカンダリクラスターに表示されるようにすることができます。また、この設定を使用して、セカンダリクラスターのクエリに、常にプライマリクラスターからの最新の更新が表示されるようにすることもできます。これは、他のセッションまたは他のクラスターによって送信されたものであっても同様です。アプリケーションでこの種類の動作を指定するには、セッションレベルのパラメータ aurora_replica_read_consistency の値を選択します。

重要

書き込みを転送するセッションには、必ず aurora_replica_read_consistency パラメータを設定します。それ以外の場合、Aurora はそのセッションの書き込み転送を有効にしません。デフォルトでは、このパラメータに空の値があるため、このパラメータを使用する場合は特定の値を選択してください。aurora_replica_read_consistency パラメータは、書き込み転送が有効になっているセカンダリクラスターでのみ有効です。

Aurora MySQL バージョン 2 および 3.04 より前のバージョン 3 の場合は、aurora_replica_read_consistency をセッション変数として使用します。Aurora MySQL バージョン 3.04 以降の場合、aurora_replica_read_consistency をセッション変数として、または DB クラスターパラメータとして使用できます。

aurora_replica_read_consistency パラメータには、EVENTUALSESSION、および GLOBAL の値を指定できます。

整合性レベルを上げると、アプリケーションは、AWS リージョン間で変更が反映されるのを待つ時間が長くなります。応答時間の短縮と、クエリを実行する前に他の場所で行われた変更が完全に使用可能であることのバランスを選択できます。

読み取り整合性を EVENTUAL に設定した場合、書き込み転送を使用するセカンダリ AWS リージョンのクエリでは、レプリケーションの遅延によりデータがわずかに古くなることがあります。同じセッションでの書き込みオペレーションの結果は、プライマリリージョンで書き込みオペレーションが実行され、現在のリージョンにレプリケートされるまで表示されません。クエリは、更新された結果が使用可能になるのを待つことはありません。したがって、ステートメントのタイミングとレプリケーションの遅延の量に応じて、古いデータや更新されたデータが取得される可能性があります。

読み取り整合性を SESSION に設定した場合、書き込み転送を使用するセカンダリ AWS リージョンのすべてのクエリに、そのセッションで行われたすべての変更の結果が表示されます。トランザクションがコミットされているかどうかにかかわらず、変更が表示されます。必要に応じて、クエリは、転送された書き込みオペレーションの結果が現在のリージョンにレプリケートされるまで待っています。他のリージョンまたは現在のリージョン内の他のセッションで実行された書き込みオペレーションの結果が更新されるのを待つことはありません。

読み取り整合性を GLOBAL に設定した場合、セカンダリ AWS リージョンのセッションには、そのセッションによって行われた変更が表示されます。また、プライマリ AWS リージョンと他のセカンダリ AWS リージョンの両方のコミットされた変更もすべて表示されます。各クエリは、セッション遅延の量に応じて変化する期間を待つことがあります。クエリは、クエリがスタートされた時点の、プライマリクラスターからコミットされたすべてのデータでセカンダリクラスターが最新の状態になったときに実行されます。

書き込み転送に関連するすべてのパラメータの詳細については、「Aurora MySQL での書き込み転送の設定パラメータ」を参照してください。

書き込み転送の使用例

これらの例では、aurora_replica_read_consistency をセッション変数として使用しています。Aurora MySQL バージョン 3.04 以降の場合、aurora_replica_read_consistency をセッション変数として、または DB クラスターパラメータとして使用できます。

次の例では、プライマリクラスターが US East (N. Virginia) リージョンにあります。セカンダリクラスターは 米国東部 (オハイオ) リージョンにあります。この例は、INSERT ステートメントの後に SELECT ステートメントが続いて実行された場合の結果を示しています。aurora_replica_read_consistency 設定値によっては、ステートメントのタイミングによって結果が異なる場合があります。一貫性を高めるには、SELECT ステートメントを発行する前にしばらくお待ちください。または Aurora は、結果のレプリケーションが完了するまで自動的に待機してから、SELECT 処理を続行することができます。

この例では、eventual の読み取り整合性設定があります。INSERT ステートメントの直後に SELECT ステートメントを実行すると、COUNT(*) の値が戻されます。この値は、新しい行が挿入される前の行数を反映します。しばらくしてから SELECT を再度実行すると、更新された行数が返されます。SELECT ステートメントは待機しません。

mysql> set aurora_replica_read_consistency = 'eventual'; mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> insert into t1 values (6); select count(*) from t1; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)

読み取り整合性設定が session の場合、INSERT の直後の SELECT ステートメントは、INSERT ステートメントからの変更が表示されるまで待機します。後続の SELECT ステートメントは待機しません。

mysql> set aurora_replica_read_consistency = 'session'; mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.01 sec) mysql> insert into t1 values (6); select count(*) from t1; select count(*) from t1; Query OK, 1 row affected (0.08 sec) +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.37 sec) +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)

読み取り整合性設定を session に設定したまま、INSERT ステートメントの実行後に短い待機を行うと、次の SELECT ステートメントが実行されるまでに更新された行カウントが使用可能になります。

mysql> insert into t1 values (6); select sleep(2); select count(*) from t1; Query OK, 1 row affected (0.07 sec) +----------+ | sleep(2) | +----------+ | 0 | +----------+ 1 row in set (2.01 sec) +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.00 sec)

読み取り整合性設定が global の場合、各 SELECT ステートメントは、クエリを実行する前に、ステートメントのスタート時刻時点のすべてのデータ変更が表示されるように待っています。各 SELECT ステートメントの待機時間は、プライマリクラスターとセカンダリクラスター間のレプリケーション遅延の量によって異なります。

mysql> set aurora_replica_read_consistency = 'global'; mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.75 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.37 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.66 sec)

Aurora MySQL での書き込み転送を使用したマルチパートステートメントの実行

DML ステートメントは、INSERT ... SELECT ステートメントや DELETE ... WHERE ステートメントなど、複数の部分から構成される場合があります。この場合、ステートメント全体がプライマリクラスターに転送され、そこで実行されます。

Aurora MySQL での書込み転送を使用したトランザクション

トランザクションがプライマリクラスターに転送されるかどうかは、トランザクションのアクセスモードによって異なります。SET TRANSACTION ステートメントまたは START TRANSACTION ステートメントを使用して、トランザクションのアクセスモードを指定できます。Aurora MySQL セッション可変 tx_read_only の値を変更することで、トランザクションアクセスモードを指定することもできます。このセッション値は、書き込み転送が有効になっているセカンダリクラスターに接続しているときにのみ変更できます。

長時間実行されるトランザクションがかなりの期間ステートメントを発行しない場合、アイドルタイムアウト期間を超える可能性があります。この期間のデフォルトは 1 分です。1 日まで増やすことができます。アイドルタイムアウトを超えたトランザクションは、プライマリクラスターによってキャンセルされます。次に送信するステートメントは、タイムアウトエラーを受け取ります。その後、Aurora はトランザクションをロールバックします。

このタイプのエラーは、書き込み転送が使用できなくなった場合に発生する可能性があります。例えば、プライマリクラスターを再起動するか、書き込み転送構成設定を無効にした場合、Aurora は書き込み転送を使用するすべてのトランザクションをキャンセルします。

Aurora MySQL での書き込み転送の設定パラメータ

Aurora クラスターのパラメータグループには、書き込み転送機能の設定が含まれています。これらはクラスターパラメータであるため、各クラスターのすべての DB インスタンスは、これらの可変に同じ値を持ちます。これらのパラメータの詳細を次の表にまとめ、表に続いて使用上の注意を記載してください。

名前 スコープ タイプ デフォルト値 有効な値
aurora_fwd_master_idle_timeout (Aurora MySQL バージョン 2) グローバル 符号なし整数 60 1-86,400
aurora_fwd_master_max_connections_pct (Aurora MySQL バージョン 2) グローバル 符号なし長整数 10 0-90
aurora_fwd_writer_idle_timeout (Aurora MySQL バージョン 3) グローバル 符号なし整数 60 1-86,400
aurora_fwd_writer_max_connections_pct (Aurora MySQL バージョン 3) グローバル 符号なし長整数 10 0-90
aurora_replica_read_consistency セッション 列挙型 null EVENTUAL, SESSION, GLOBAL

セカンダリクラスターからの着信書き込みリクエストを制御するには、プライマリクラスターで次の設定を使用します。

  • aurora_fwd_master_idle_timeoutaurora_fwd_writer_idle_timeout: プライマリクラスターがセカンダリクラスターから転送された接続でアクティビティを終了するまで待機する秒数。この期間を超えてセッションがアイドル状態のままである場合、Aurora はセッションをキャンセルします。

  • aurora_fwd_master_max_connections_pctaurora_fwd_writer_max_connections_pct: リーダーから転送されたクエリを処理するためにライター DB インスタンスで使用できるデータベース接続の上限。これは、プライマリクラスター内の書き込み DB インスタンスの max_connections 設定のパーセンテージで表されます。例えば、max_connections が800 回、aurora_fwd_master_max_connections_pctまたはaurora_fwd_writer_max_connections_pctが 10 回 の場合、書き込みは最大 80 回 の同時転送セッションを許可します。これらの接続は、max_connections 設定によって管理される同じ接続プールから取得されます。

    この設定は、1 つ以上のセカンダリクラスターで書き込み転送が有効になっている場合に、プライマリクラスターにのみ適用されます。この値を小さくしても、既存の接続は影響を受けません。Aurora は、セカンダリクラスターから新しい接続を作成するときに、この新しい設定値を参照します。デフォルト値は 10 で、max_connections 値の 10% を表します。セカンダリクラスターのいずれかでクエリ転送を有効にする場合、セカンダリクラスターからの書き込みオペレーションを正常に実行するには、この設定に 0 以外の値を指定する必要があります。値が 0 の場合、書き込みオペレーションは、メッセージ ER_CON_COUNT_ERROR とともにエラーコード Not enough connections on writer to handle your request を受け取ります。

aurora_replica_read_consistency パラメータは、書き込み転送を有効にするセッションレベルのパラメータです。各セッションでそれを使用します。読み取り整合性レベルには、EVENTUALSESSION、または GLOBAL を指定できます。整合性レベルの詳細については、Aurora MySQL での書き込み転送の分離と整合性 を参照してください。このパラメータには、次の規則が適用されます。

  • これはセッションレベルのパラメータです。デフォルト値は '' (空) です。

  • 書き込み転送は、aurora_replica_read_consistencyEVENTUALSESSION、または GLOBAL に設定されている場合にのみセッションで使用できます。このパラメータは、書き込み転送が有効で、Aurora Global Database 内にあるセカンダリクラスターのリーダーインスタンスでのみ関係します。

  • マルチステートメントトランザクション内では、この可変を設定する (空の場合) または設定解除する (既に設定されている場合) ことはできません。ただし、トランザクション中に、有効な値 (EVENTUALSESSIONGLOBAL) から別の値 (EVENTUALSESSIONGLOBAL) に変更することは可能です。

  • セカンダリクラスターで書き込み転送が有効になっていない場合、可変は SET に指定できません。

  • プライマリクラスターでセッション可変を設定しても、効果はありません。プライマリクラスターでこの可変を変更しようとすると、エラーが発生します。

Aurora MySQL での書き込み転送の Amazon CloudWatch メトリクス

次の Amazon CloudWatch メトリクスと Aurora MySQL ステータス変数は、1 つ以上のセカンダリクラスターで書き込み転送を使用するときに、プライマリクラスターに適用されます。これらのメトリクスはすべて、プライマリクラスターのライター DB インスタンスで測定されます。

CloudWatch メトリクス Aurora MySQL ステータス変数 単位 説明

AuroraDMLRejectedMasterFull

カウント

ライター DB インスタンスでセッションが一杯になったために拒否された転送クエリの数。

Aurora MySQL バージョン 2 の場合。

AuroraDMLRejectedWriterFull

カウント

ライター DB インスタンスでセッションが一杯になったために拒否された転送クエリの数。

Aurora MySQL バージョン 3 の場合。

ForwardingMasterDMLLatency

ミリ秒

書き込み DB インスタンスで転送された各 DML ステートメントを処理する平均時間。

セカンダリクラスターが書き込みリクエストを転送する時間や、変更をセカンダリクラスターに複製する時間は含まれません。

Aurora MySQL バージョン 2 の場合。

ForwardingMasterDMLThroughput

1 秒あたりのカウント数

この書き込み DB インスタンスによって 1 秒間に処理される、転送された DML ステートメントの数。

Aurora MySQL バージョン 2 の場合。

ForwardingMasterOpenSessions

Aurora_fwd_master_open_sessions カウント

書き込み DB インスタンスで転送されたセッションの数。

Aurora MySQL バージョン 2 の場合。

Aurora_fwd_master_dml_stmt_count カウント

この書き込み DB インスタンスに転送された DML ステートメントの合計数。

Aurora MySQL バージョン 2 の場合。

Aurora_fwd_master_dml_stmt_duration マイクロ秒

この書き込み DB インスタンスに転送された DML ステートメントの合計期間。

Aurora MySQL バージョン 2 の場合。

Aurora_fwd_master_select_stmt_count カウント

この書き込み DB インスタンスに転送された SELECT ステートメントの総数。

Aurora MySQL バージョン 2 の場合。

Aurora_fwd_master_select_stmt_duration マイクロ秒

この書き込み DB インスタンスに転送された SELECT ステートメントの合計期間。

Aurora MySQL バージョン 2 の場合。

ForwardingWriterDMLLatency

ミリ秒

書き込み DB インスタンスで転送された各 DML ステートメントを処理する平均時間。

セカンダリクラスターが書き込みリクエストを転送する時間や、変更をセカンダリクラスターに複製する時間は含まれません。

Aurora MySQL バージョン 3 の場合。

ForwardingWriterDMLThroughput

1 秒あたりのカウント数

この書き込み DB インスタンスによって 1 秒間に処理される、転送された DML ステートメントの数。

Aurora MySQL バージョン 3 の場合。

ForwardingWriterOpenSessions

Aurora_fwd_writer_open_sessions カウント

書き込み DB インスタンスで転送されたセッションの数。

Aurora MySQL バージョン 3 の場合。

Aurora_fwd_writer_dml_stmt_count カウント

この書き込み DB インスタンスに転送された DML ステートメントの合計数。

Aurora MySQL バージョン 3 の場合。

Aurora_fwd_writer_dml_stmt_duration マイクロ秒 この書き込み DB インスタンスに転送された DML ステートメントの合計期間。

Aurora_fwd_writer_select_stmt_count カウント

この書き込み DB インスタンスに転送された SELECT ステートメントの総数。

Aurora MySQL バージョン 3 の場合。

Aurora_fwd_writer_select_stmt_duration マイクロ秒

この書き込み DB インスタンスに転送された SELECT ステートメントの合計期間。

Aurora MySQL バージョン 3 の場合。

次の CloudWatch メトリクスと Aurora MySQL ステータス変数は、各セカンダリクラスターに適用されます。これらのメトリクスは、書き込み転送が有効になっているセカンダリクラスターのリーダー DB インスタンスで測定されます。

CloudWatch メトリクス Aurora MySQL ステータス変数 単位 説明

ForwardingReplicaDMLLatency

ミリ秒 レプリカ上で転送された DML の平均応答時間。

ForwardingReplicaDMLThroughput

1 秒あたりのカウント数 1 秒あたりに処理された転送 DML ステートメントの数。

ForwardingReplicaOpenSessions

Aurora_fwd_replica_open_sessions カウント リーダー DB インスタンスで書き込み転送を使用しているセッションの数。

ForwardingReplicaReadWaitLatency

ミリ秒

リーダー DB インスタンス上の SELECT ステートメントがプライマリクラスターに追いつくのを待機する平均待機時間。

クエリを処理する前にリーダー DB インスタンスが待機する程度は、aurora_replica_read_consistency 設定によって異なります。

ForwardingReplicaReadWaitThroughput

1 秒あたりのカウント数 書き込みを転送しているすべてのセッションで、1 秒間処理した SELECT ステートメントの総数。

ForwardingReplicaSelectLatency

(–) ミリ秒 転送済みSELECTレイテンシー、SELECTモニタリング期間内に転送されたすべてのステートメントの平均値。

ForwardingReplicaSelectThroughput

1 秒あたりのカウント数 モニタリング期間内の 1 秒あたりの転送済み SELECT スループット。

Aurora_fwd_replica_dml_stmt_count カウント このリーダー DB インスタンスから転送された DML ステートメントの合計数。

Aurora_fwd_replica_dml_stmt_duration マイクロ秒 このリーダー DB インスタンスから転送された DML ステートメントの合計期間。

Aurora_fwd_replica_errors_session_limit カウント

以下のエラー条件のいずれかが原因でプライマリクラスターが拒否したセッションの数。

  • writer full

  • 転送中のステートメントが多すぎます

Aurora_fwd_replica_read_wait_count カウント このリーダー DB インスタンスでの書き込み後の読み取り待機の合計数。

Aurora_fwd_replica_read_wait_duration マイクロ秒 このリーダー DB インスタンスの読み取り整合性設定による待機時間の合計。

Aurora_fwd_replica_select_stmt_count カウント このリーダー DB インスタンスから転送された SELECT ステートメントの合計数。

Aurora_fwd_replica_select_stmt_duration マイクロ秒 このリーダー DB インスタンスから転送された SELECT ステートメントの合計期間。