Amazon Aurora Global Database への接続
各 Aurora Global Database には、プライマリ DB クラスターの現在のライターインスタンスにリクエストをルーティングするために Aurora によって自動的に更新されるライターエンドポイントが付属しています。ライターエンドポイントを使用すると、Aurora Global Database のマネージドスイッチオーバーやフェイルオーバー機能を使用してプライマリリージョンの場所を変更した後でも、接続文字列を変更する必要がありません。Aurora Global Database のスイッチオーバーやフェイルオーバーと共にライターエンドポイントを使用する方法の詳細については、「Amazon Aurora Global Database でのスイッチオーバーまたはフェイルオーバーの使用」を参照してください。
アプリケーションのニーズを満たすエンドポイントの選択
Aurora Global Database への接続は、データベースに対する読み取りまたは書き込みの必要性、およびリクエストをルーティングする先の AWS リージョンによって異なります。一般的なユースケースをいくつか示します。
-
ライターインスタンスへのリクエストのルーティング: データ操作言語 (DML) およびデータ定義言語 (DDL) ステートメントを実行する必要がある場合、または読み取りと書き込みの間に強力な整合性が必要な場合は、Aurora Global Database ライターエンドポイントに接続します。このエンドポイントは、グローバルデータベースのプライマリクラスターのライターインスタンスにリクエストをルーティングします。このエンドポイントは、リクエストをライターインスタンスにルーティングするように自動的に更新されるため、グローバルクラスターのライターの場所を変更するたびにアプリケーションを更新する必要がなくなります。グローバルエンドポイントを使用して、クロスリージョンの読み取り/書き込みリクエストをライターに送信することもできます。
注記
Aurora Global Database ライターエンドポイントが使用可能になる前にグローバルデータベースをセットアップすると、アプリケーションはプライマリクラスターのクラスターエンドポイントに接続する可能性があります。この場合、代わりにグローバルライターエンドポイントを使用するように接続設定を切り替えることをお勧めします。これにより、Aurora Global Database のスイッチオーバーまたはフェイルオーバーごとに接続設定を変更する必要がなくなります。
ライターエンドポイント名の最初の部分は、Aurora Global Database の名前です。したがって、Aurora Global Database の名前を変更すると、ライターエンドポイントの名前が変わるため、それを使用するコードは新しい名前で更新する必要があります。
-
アプリケーションのリージョンに近い読み取りのスケーリング: アプリケーションと同じまたは近くの AWS リージョンで読み取り専用リクエストをスケールするには、プライマリまたはセカンダリ Aurora クラスターのリーダーエンドポイントに接続します。
-
不定期のクロスリージョン書き込みによる読み取りのスケーリング: メンテナンスやデータクリーンアップなど、不定期の DML ステートメントの場合は、書き込み転送が有効になっているセカンダリクラスターのリーダーエンドポイントに接続します。書き込み転送では、Aurora は書き込みステートメントを Aurora Global Database のプライマリリージョンのライターに自動的に転送します。書き込み転送には以下の利点があります。
-
リージョン間で書き込みを送信する場合に、セカンダリクラスターとプライマリクラスターの間の接続を確立するための面倒な作業を行う必要はありません。
-
アプリケーションで読み取りリクエストと書き込みリクエストを分割する必要はありません。
-
書き込み後の読み取りリクエストの一貫性を管理するための複雑なロジックを開発する必要はありません。
ただし、書き込み転送では、クロスリージョンフェイルオーバーまたはスイッチオーバーを実行した後で、新しく昇格したプライマリリージョンのリーダーエンドポイントに接続するようにアプリケーションのコードまたは設定を更新する必要があります。書き込み転送を通じて実行されるオペレーションのレイテンシーをモニタリングして、書き込みリクエストの処理のオーバーヘッドをチェックすることをお勧めします。最後に、書き込み転送は、データ定義言語 (DDL) の変更や
SELECT FOR UPDATE
ステートメントの作成など、特定の MySQL または PostgreSQL オペレーションをサポートしていません。AWS リージョン間での書き込み転送の使用の詳細については、「Amazon Aurora Global Database の書き込み転送を使用する」を参照してください。
-
さまざまな種類の Aurora エンドポイントの詳細については、「Amazon Aurora DB クラスターへの接続」を参照してください。
Amazon Aurora Global Database のエンドポイントの表示
コンソールで Aurora Global Database を表示すると、すべてのクラスターに関連付けられているすべてのエンドポイントを確認できます。次の図は、プライマリ DB クラスターの詳細に表示されるエンドポイントのタイプの例を示しています。
-
グローバルライター – グローバルデータベースクラスターの現在のライター DB インスタンスを常に指す単一の読み取り/書き込みエンドポイント。
-
ライター – グローバルデータベースクラスター内のプライマリ DB クラスターに対する読み取り/書き込みリクエストの接続エンドポイント。
-
リーダー – グローバルデータベースクラスター内のプライマリまたはセカンダリ DB クラスターに対する読み取り専用リクエストの接続エンドポイント。レイテンシーを最小限にするときは、お使いの AWS リージョン か、最寄りの AWS リージョン の、いずれかにあるリーダーエンドポイントを選択します。
![RDS コンソールで、Aurora Global Database の [接続とセキュリティ] タブに、グローバルライターエンドポイントが表示されます。](images/aurora-global-databases-primary-cluster-connectivity-2.png)
グローバルデータベースのエンドポイントを表示するには
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、データベースを選択します。
-
リストで、グローバルデータベース、またはエンドポイントを表示するプライマリまたはセカンダリ DB クラスターを選択します。
-
[接続とセキュリティ] タブを選択して、エンドポイントの詳細を表示します。表示されるエンドポイントは、次のように、選択したクラスターのタイプによって異なります。
-
グローバルデータベース – グローバルライターエンドポイント。
-
プライマリ DB クラスター – グローバルライターエンドポイント、およびプライマリクラスターのクラスターエンドポイントとリーダーエンドポイント。
-
セカンダリ DB クラスター – セカンダリクラスターのクラスターエンドポイントとリーダーエンドポイント。セカンダリクラスターの場合、クラスターエンドポイントは書き込みリクエストを処理しないため、ステータスが [非アクティブ] と表示されます。引き続きクラスターエンドポイントに接続できますが、読み取りクエリに限定されます。
-
グローバルクラスターのライターエンドポイントを表示するには、次の例に示すように AWS CLI describe-global-clusters コマンドを使用します。
aws rds describe-global-clusters --region
aws_region
{ "GlobalClusters": [ { "GlobalClusterIdentifier": "global_cluster_id
", "GlobalClusterResourceId": "cluster-unique_string
", "GlobalClusterArn": "arn:aws:rds::123456789012:global-cluster:global_cluster_id
", "Status": "available", "Engine": "aurora-mysql", "EngineVersion": "5.7.mysql_aurora.2.11.2", "GlobalClusterMembers": [ ... ], "Endpoint": "global_cluster_id
.global-unique_string
.global.rds.amazonaws.com" } ] }
グローバルクラスターのメンバー DB クラスターのクラスターおよびリーダーエンドポイントを表示するには、次の例に示すように AWS CLI describe-db-clusters コマンドを使用します。Endpoint
および ReaderEndpoint
に返される値は、それぞれクラスターエンドポイントとリーダーエンドポイントです。
aws rds describe-db-clusters --region
primary_region
--db-cluster-identifierdb_cluster_id
{ "DBClusters": [ { "AllocatedStorage": 1, "AvailabilityZones": [ "az_1
", "az_2
", "az_3
" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "db_cluster_id
", "DBClusterParameterGroup": "default.aurora-mysql5.7", "DBSubnetGroup": "default", "Status": "available", "EarliestRestorableTime": "2023-08-01T18:21:11.301Z", "Endpoint": "db_cluster_id
.cluster-unique_string
.primary_region
.rds.amazonaws.com", "ReaderEndpoint": "db_cluster_id
.cluster-ro-unique_string
.primary_region
.rds.amazonaws.com", "MultiAZ": false, "Engine": "aurora-mysql", "EngineVersion": "5.7.mysql_aurora.2.11.2", "ReadReplicaIdentifiers": [ "arn:aws:rds:secondary_region
:123456789012:cluster:db_cluster_id
" ], "DBClusterMembers": [ { "DBInstanceIdentifier": "db_instance_id
", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 } ], ... "TagList": [], "GlobalWriteForwardingRequested": false } ] }
グローバルクラスターのライターエンドポイントを表示するには、RDS API の DescribeGlobalClusters オペレーションを使用します。グローバルクラスターのメンバー DB クラスターのクラスターおよびリーダーエンドポイントを表示するには、RDS API の DescribeDBClusters オペレーションを使用します。
グローバルライターエンドポイントの使用に関する考慮事項
Aurora Global Database ライターエンドポイントを効果的に活用するには、以下のガイドラインとベストプラクティスに従います。
-
クロスリージョンフェイルオーバーまたはスイッチオーバー後の中断を最小限に抑えるには、アプリケーションコンピューティングと、プライマリおよびセカンダリ AWS リージョンとの間に VPC 接続を設定できます。例えば、プライマリクラスターと同じ VPC で実行しているアプリケーションまたはクライアントシステムがあるとします。セカンダリクラスターが昇格されると、グローバルライターエンドポイントはそのクラスターを指すように自動的に変更されます。グローバルライターエンドポイントでは、アプリケーションの接続設定を変更しないで済みますが、2 つの VPC 間のネットワークを設定するまで、アプリケーションは新しく昇格したプライマリ AWS リージョンの VPC の IP アドレスにアクセスできません。この接続をセットアップするさまざまなオプションについては、「Amazon VPC 間の接続オプション」を参照してください。
-
グローバルデータベースフェイルオーバーまたはスイッチオーバー後のグローバルライターエンドポイントの更新は、ドメインネームサービス (DNS) のキャッシュ期間によっては時間がかかる場合があります。詳細については、「DNS キャッシュ」を参照してください。Aurora Global Database は、グローバルライターエンドポイントで DNS の変更を確認すると、RDS イベントを出力します。このイベントを使用して、イベントが生成された時間を超えて DNS キャッシュが拡張しないようにするための戦略を策定できます。詳細については、「DB クラスターイベント」を参照してください。
-
Aurora Global Database はデータを非同期的にレプリケートします。クロスリージョンフェイルオーバー方式では、フェイルオーバーの開始前に、選択したセカンダリにレプリケートされなかった書き込みトランザクションデータが発生する可能性があります。Aurora は、元のプライマリ AWS リージョンでの書き込みをベストエフォートベースでブロックしようとしますが、フェイルオーバーはスプリットブレインの問題の影響を受けやすくなります。データ損失とスプリットブレインのリスクを最小限に抑えるための考慮事項は、Aurora Global Database ライターエンドポイントにも適用されます。詳細については、「Aurora Global Database のマネージドフェイルオーバーを実行する」を参照してください。