Aurora MySQL グローバルデータベースで書き込み転送を使用する
トピック
- Aurora MySQL での書き込み転送を利用できるリージョンとバージョン
- Aurora MySQL での書き込み転送の有効化
- セカンダリクラスターで Aurora MySQL での書き込み転送が有効になっているかどうかの確認
- Aurora MySQL での書き込み転送とアプリケーションおよび SQL の互換性
- Aurora MySQL での書き込み転送の分離と整合性
- Aurora MySQL での書き込み転送を使用したマルチパートステートメントの実行
- Aurora MySQL での書込み転送を使用したトランザクション
- Aurora MySQL での書き込み転送の設定パラメータ
- Aurora MySQL での書き込み転送の Amazon CloudWatch メトリクス
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-usernameuser_name
--master-user-passwordpassword
\ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-west-1
aws rds modify-db-cluster --db-cluster-identifier write-forwarding-test-cluster-2 \ --regionus-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 ステートメントを使用できます。
-
INSERT
、DELETE
、およびUPDATE
などのデータ操作言語 (DML) ステートメント。書き込み転送で使用できるこれらのステートメントのプロパティには、以下で説明するように、いくつかの制限があります。 -
SELECT ... LOCK IN SHARE MODE
とSELECT FOR UPDATE
ステートメント。 -
PREPARE
とEXECUTE
ステートメント。
特定のステートメントは、書き込み転送機能を持つグローバルデータベースで使用すると、許可されないか、または古い結果を生成する可能性があります。したがって、セカンダリクラスターで 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
パラメータには、EVENTUAL
、SESSION
、および 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
ステートメントを使用して、トランザクションのアクセスモードを指定できます。transaction_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_timeout
、aurora_fwd_writer_idle_timeout
: プライマリクラスターがセカンダリクラスターから転送された接続でアクティビティを終了するまで待機する秒数。この期間を超えてセッションがアイドル状態のままである場合、Aurora はセッションをキャンセルします。 -
aurora_fwd_master_max_connections_pct
、aurora_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
パラメータは、書き込み転送を有効にするセッションレベルのパラメータです。各セッションでそれを使用します。読み取り整合性レベルには、EVENTUAL
、SESSION
、または GLOBAL
を指定できます。整合性レベルの詳細については、Aurora MySQL での書き込み転送の分離と整合性 を参照してください。このパラメータには、次の規則が適用されます。
-
これはセッションレベルのパラメータです。デフォルト値は '' (空) です。
-
書き込み転送は、
aurora_replica_read_consistency
がEVENTUAL
、SESSION
、またはGLOBAL
に設定されている場合にのみセッションで使用できます。このパラメータは、書き込み転送が有効で、Aurora Global Database 内にあるセカンダリクラスターのリーダーインスタンスでのみ関係します。 -
マルチステートメントトランザクション内では、この可変を設定する (空の場合) または設定解除する (既に設定されている場合) ことはできません。ただし、トランザクション中に、有効な値 (
EVENTUAL
、SESSION
、GLOBAL
) から別の値 (EVENTUAL
、SESSION
、GLOBAL
) に変更することは可能です。 -
セカンダリクラスターで書き込み転送が有効になっていない場合、可変は
SET
に指定できません。 -
プライマリクラスターでセッション可変を設定しても、効果はありません。プライマリクラスターでこの可変を変更しようとすると、エラーが発生します。
Aurora MySQL での書き込み転送の Amazon CloudWatch メトリクス
次の Amazon CloudWatch メトリクスと Aurora MySQL ステータス変数は、1 つ以上のセカンダリクラスターで書き込み転送を使用するときに、プライマリクラスターに適用されます。これらのメトリクスはすべて、プライマリクラスターのライター DB インスタンスで測定されます。
CloudWatch メトリクス | Aurora MySQL ステータス変数 | 単位 | 説明 |
---|---|---|---|
|
– | カウント |
ライター DB インスタンスでセッションが一杯になったために拒否された転送クエリの数。 Aurora MySQL バージョン 2 の場合。 |
|
– | カウント |
ライター DB インスタンスでセッションが一杯になったために拒否された転送クエリの数。 Aurora MySQL バージョン 3 の場合。 |
|
– | ミリ秒 |
書き込み DB インスタンスで転送された各 DML ステートメントを処理する平均時間。 セカンダリクラスターが書き込みリクエストを転送する時間や、変更をセカンダリクラスターに複製する時間は含まれません。 Aurora MySQL バージョン 2 の場合。 |
|
– | 1 秒あたりのカウント数 |
この書き込み DB インスタンスによって 1 秒間に処理される、転送された DML ステートメントの数。 Aurora MySQL バージョン 2 の場合。 |
|
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 インスタンスに転送された Aurora MySQL バージョン 2 の場合。 |
– |
Aurora_fwd_master_select_stmt_duration |
マイクロ秒 |
この書き込み DB インスタンスに転送された Aurora MySQL バージョン 2 の場合。 |
|
– | ミリ秒 |
書き込み DB インスタンスで転送された各 DML ステートメントを処理する平均時間。 セカンダリクラスターが書き込みリクエストを転送する時間や、変更をセカンダリクラスターに複製する時間は含まれません。 Aurora MySQL バージョン 3 の場合。 |
|
– | 1 秒あたりのカウント数 | この書き込み DB インスタンスによって 1 秒間に処理される、転送された DML ステートメントの数。 Aurora MySQL バージョン 3 の場合。 |
|
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 インスタンスに転送された |
– |
Aurora_fwd_writer_select_stmt_duration |
マイクロ秒 |
この書き込み DB インスタンスに転送された Aurora MySQL バージョン 3 の場合。 |
次の CloudWatch メトリクスと Aurora MySQL ステータス変数は、各セカンダリクラスターに適用されます。これらのメトリクスは、書き込み転送が有効になっているセカンダリクラスターのリーダー DB インスタンスで測定されます。
CloudWatch メトリクス | Aurora MySQL ステータス変数 | 単位 | 説明 |
---|---|---|---|
|
– | ミリ秒 | レプリカ上で転送された DML の平均応答時間。 |
|
– | 1 秒あたりのカウント数 | 1 秒あたりに処理された転送 DML ステートメントの数。 |
|
Aurora_fwd_replica_open_sessions |
カウント | リーダー DB インスタンスで書き込み転送を使用しているセッションの数。 |
|
– | ミリ秒 |
リーダー DB インスタンス上の クエリを処理する前にリーダー DB インスタンスが待機する程度は、 |
|
– | 1 秒あたりのカウント数 | 書き込みを転送しているすべてのセッションで、1 秒間処理した SELECT ステートメントの総数。 |
|
(–) | ミリ秒 | 転送済みSELECT レイテンシー、SELECT モニタリング期間内に転送されたすべてのステートメントの平均値。 |
|
– | 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 |
カウント |
以下のエラー条件のいずれかが原因でプライマリクラスターが拒否したセッションの数。
|
– |
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 ステートメントの合計期間。 |