別の AWS リージョンでのリードレプリカの作成
Amazon RDS では、MariaDB、MySQL、Oracle、PostgreSQL のいずれかのリードレプリカをソース DB インスタンスとは異なる AWS リージョンに作成できます。クロスリージョンリードレプリカの作成は、Amazon RDS の SQL Server ではサポートされていません。

別の AWS リージョンにリードレプリカを作成して、以下を実行します。
-
災害対策機能が向上します。
-
ユーザーに近い AWS リージョンへの読み取り操作をスケールします。
-
ある AWS リージョンのデータセンターから別の AWS リージョンのデータセンターへの移行が簡単になります。
ソースインスタンスとは異なる AWS リージョンでリードレプリカを作成する作業は、同じ AWS リージョンでレプリカを作成する作業と似ています。AWS Management Console の使用、create-db-instance-read-replica
コマンドの実行、または CreateDBInstanceReadReplica
API オペレーションの呼び出しを行うことができます。
ソース DB インスタンスとは異なる AWS リージョンに暗号化されたリードレプリカを作成するには、ソース DB インスタンスを暗号化する必要があります。
クロスリージョンリードレプリカの作成
異なる AWS リージョンでソース MariaDB、MySQL、Oracle、または PostgreSQL DB インスタンスからリードレプリカを作成する手順を以下に示します。
AWS を使用して、複数の AWS Management Console リージョンにわたるリードレプリカを作成できます。
複数の AWS リージョンにわたるリードレプリカをコンソールで作成するには
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択します。
-
リードレプリカのソースとして使用する MariaDB、MySQL、Oracle、PostgreSQL のいずれかの DB インスタンスを選択します。
-
[アクション] で [リードレプリカの作成] を選択します。
-
[DB インスタンス識別子] に、リードレプリカの名前を入力します。
-
[送信先リージョン] を選択します。
-
使用するインスタンス仕様を選択します。リードレプリカでも同じ DB インスタンスクラスとストレージタイプを使用することをお勧めします。
-
別の AWS リージョンで暗号化されたリードレプリカを作成するには
-
[Enable encryption (暗号化の有効化)] を選択します。
-
[AWS KMS key] では、送信先 AWS リージョンの KMS キーの AWS KMS key 識別子を選択します。
注記 暗号化されたリードレプリカを作成するには、ソース DB インスタンスを暗号化する必要があります。DB インスタンスの暗号化については、「Amazon RDS リソースの暗号化」を参照してください。
-
-
ストレージの自動スケーリングなど、他のオプションを選択します。
-
[Create read replica] を選択します。
異なる AWS リージョンでソースの MySQL、MariaDB、Oracle、または PostgreSQL DB インスタンスからリードレプリカを作成するには、create-db-instance-read-replica
コマンドを使用できます。この場合、リードレプリカ (作成先のリージョン) が必要な create-db-instance-read-replica
リージョンの AWS を使用し、ソース DB インスタンスの Amazon リソースネーム (ARN) を指定します。ARN は、Amazon Web Services で作成したリソースを一意に識別します。
例えば、ソース DB インスタンスが US East (N. Virginia) リージョンにある場合、ARN は次の例のようになります。
arn:aws:rds:us-east-1:123456789012:db:mydbinstance
ARN の詳細については、「Amazon RDS の Amazon リソースネーム (ARN) の使用」を参照してください。
ソース DB インスタンスから異なる AWS リージョンにリードレプリカを作成するには、作成先の AWS CLI リージョンで create-db-instance-read-replica
AWS コマンドを使用します。別の AWS リージョンでリードレプリカを作成するには、次のパラメータが必要です。
-
--region
– リードレプリカが作成される作成先の AWS リージョン。 -
--source-db-instance-identifier
– ソース DB インスタンスの DB インスタンス識別子です。この識別子は、コピー元 AWS リージョンの ARN 形式である必要があります。 -
--db-instance-identifier
– 作成先の AWS リージョンのリードレプリカの識別子。
例 クロスリージョンリードレプリカの
次のコードは、米国西部 (オレゴン) リージョン内のソース DB インスタンスから US East (N. Virginia) リージョン内にリードレプリカを作成します。
Linux、macOS、Unix の場合:
aws rds create-db-instance-read-replica \ --db-instance-identifier
myreadreplica
\ --regionus-west-2
\ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
Windows の場合:
aws rds create-db-instance-read-replica ^ --db-instance-identifier
myreadreplica
^ --regionus-west-2
^ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
別の AWS リージョンで暗号化されたリードレプリカを作成するには、次のパラメータも必要です。
-
--source-region
– ソース DB インスタンスの AWS リージョン。--source-region
を指定しない場合、--pre-signed-url
の値を指定する必要があります。署名付きの URL は、ソースのCreateDBInstanceReadReplica
リージョンで呼び出される AWS オペレーションに対する、署名バージョン 4 で署名されたリクエストを含む URL です。署名付き URL の詳細については、「CreateDBInstanceReadReplica
」を参照してください。 -
--kms-key-id
- 送信先 AWS リージョンでリードレプリカの暗号化に使用する KMS キーの AWS KMS key 識別子。
例 暗号化されたクロスリージョンリードレプリカの
次のコードは、米国西部 (オレゴン) リージョン内のソース DB インスタンスから US East (N. Virginia) リージョン内に暗号化されたリードレプリカを作成します。
Linux、macOS、Unix の場合:
aws rds create-db-instance-read-replica \ --db-instance-identifier
myreadreplica
\ --regionus-west-2
\ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
\ --source-regionus-east-1
\ --kms-key-idmy-us-west-2-key
Windows の場合:
aws rds create-db-instance-read-replica ^ --db-instance-identifier
myreadreplica
^ --regionus-west-2
^ --source-db-instance-identifier arn:aws:rds:us-east-1
:123456789012
:db:mydbinstance
^ --source-regionus-east-1
^ --kms-key-idmy-us-west-2-key
異なる AWS リージョンでソースの MySQL、MariaDB、Oracle、または PostgreSQL DB インスタンスからリードレプリカを作成するには、Amazon RDS API 関数 CreateDBInstanceReadReplica を呼び出すことができます。この場合、リードレプリカが必要な AWS リージョン (作成先のリージョン) の CreateDBInstanceReadReplica を呼び出し、ソース DB インスタンスの Amazon リソースネーム (ARN) を指定します。ARN は、Amazon Web Services で作成したリソースを一意に識別します。
ソース DB インスタンスから異なる AWS リージョンに暗号化されたリードレプリカを作成するには、作成先の AWS リージョンで Amazon RDS API の CreateDBInstanceReadReplica
オペレーションを使用できます。暗号化されたリードレプリカを別の AWS リージョンに作成するには、PreSignedURL
の値を指定する必要があります。PreSignedURL
には、リードレプリカが作成されるソース AWS リージョンで呼び出す CreateDBInstanceReadReplica
オペレーションのリクエストが含まれている必要があります。PreSignedUrl
の詳細については、「CreateDBInstanceReadReplica
」を参照してください。
例えば、ソース DB インスタンスが US East (N. Virginia) リージョンにある場合、ARN は以下のような内容です。
arn:aws:rds:us-east-1:123456789012:db:mydbinstance
ARN の詳細については、「Amazon RDS の Amazon リソースネーム (ARN) の使用」を参照してください。
例
https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=®ion-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>
Amazon RDS でのクロスリージョンレプリケーションのしくみ
Amazon RDS は、次のプロセスを使用してクロスリージョンリードレプリカを作成します。関係する AWS リージョンとデータベースのデータ量によっては、このプロセスは完了までに数時間かかることがあります。クロスリージョンリードレプリカを作成する際、この情報を使用してプロセスの進行状況を確認できます。
-
Amazon RDS は、ソース DB インスタンスをレプリケーションソースとして設定し始め、ステータスを modifying に設定します。
-
Amazon RDS は、作成先の AWS リージョンで指定されたリードレプリカをセットアップし始め、ステータスを creating に設定します。
-
Amazon RDS は、ソース AWS リージョンでソース DB インスタンスの自動 DB スナップショットを作成します。DB スナップショット名の形式は、
rds:<InstanceID>-<timestamp>
です。ここで、<InstanceID>
はソースインスタンスの識別子で、<timestamp>
はコピーの開始日時です。例えば、rds:mysourceinstance-2013-11-14-09-24
はインスタンスmysourceinstance
から2013-11-14-09-24
に作成されたことを表します。自動 DB スナップショットの作成中、ソース DB インスタンスのステータスが modifying のままになり、リードレプリカのステータスが creating のままになります。DB スナップショットのステータスは creating です。コンソールの DB スナップショットページの進行状況列には、DB スナップショット作成の進行状況が報告されます。DB スナップショットが完成すると、DB スナップショットとソース DB インスタンスの両方のステータスが available に設定されます。 -
Amazon RDS は、初期データ転送用のクロスリージョンスナップショットコピーを開始します。スナップショットコピーは、転送先 AWS リージョンの自動スナップショットとして、creating のステータスで一覧表示されます。名前はソース DB スナップショットと同じです。DB スナップショットの進行状況列には、コピーの進行状況が示されます。コピーが完了すると、DB スナップショットコピーのステータスが available に設定されます。
-
次に、Amazon RDS はリードレプリカで初期データロード用のコピーされた DB スナップショットを使用します。このフェーズの間、リードレプリカは転送先の DB インスタンスの一覧に、creating のステータスで表示されます。ロードが完了すると、リードレプリカのステータスが available に設定され、DB スナップショットコピーが削除されます。
-
リードレプリカが available ステータスに達すると、Amazon RDS は、リードレプリカ作成操作が開始されてからソースインスタンスに加えられた変更のレプリケーションから始めます。このフェーズでは、リードレプリカのレプリケーション遅延時間が 0 より大きくなります。
レプリケーションのラグタイムについては、「リードレプリケーションのモニタリング」を参照してください。
クロスリージョンレプリケーションに関する考慮事項
AWS リージョン内でレプリケーションを実行する際の考慮事項はすべて、クロスリージョンレプリケーションに適用されます。AWS リージョン間のレプリケーションには、他にも次の考慮事項が適用されます。
-
次の Amazon RDS DB インスタンスを使用している場合、AWS リージョン間でしかレプリケーションできません。
-
MariaDB (すべてのバージョン)
-
MySQL バージョン 5.6 以上
-
12.1.0.2.v10 以上を使用する Oracle Database 12c Release 1 (12.1) の Oracle Enterprise Edition (EE)、Oracle Database 12c Release 2 (12.2)、および非 CDB アーキテクチャを使用する Oracle Database 19c。
注記 CDB アーキテクチャを使用して作成する Oracle DB インスタンスはサポートされていません。
Active Data Guard のライセンスが必要です。Oracle クロスリージョンリードレプリカの制限の詳細については、「Oracle のレプリカ要件」を参照してください。
-
PostgreSQL (すべてのバージョン)
-
-
ソース DB インスタンスでは、複数の AWS リージョンにクロスリージョンリードレプリカを作成できます。
-
別の Amazon RDS DB インスタンスのリードレプリカでないソース Amazon RDS DB インスタンスからのみ、クロスリージョン Amazon RDS リードレプリカを作成できます。
-
AWS GovCloud (米国東部) と AWS GovCloud (米国西部) リージョンの間ではレプリケーションできますが、AWS GovCloud (US) との間ではレプリケーションできません。
-
リードレプリカがソースインスタンスとは異なる AWS リージョンにある場合は、高いレベルのラグタイムが発生することが予想されます。リージョンのデータセンター間のネットワークチャネルの方が長くなったために、このようなラグタイムが発生します。
-
クロスリージョンリードレプリカでは、
--db-subnet-group-name
パラメータを指定する create read replica コマンドのいずれかで、同じ VPC の DB サブネットグループを指定する必要があります。 -
VPC のアクセスコントロールリスト (ACL) のエントリ数に制限があるため、5 つを超えるクロスリージョンリードレプリカのインスタンスについては保証されません。
-
リードレプリカでは、指定された DB エンジンのデフォルトの DB パラメータグループおよび DB オプショングループが使用されます。
-
リードレプリカは、デフォルトのセキュリティグループを使用します。
-
MariaDB、MySQL、Oracle DB の各インスタンスの場合、クロスリージョンリードレプリカのソース DB インスタンスが削除されると、リードレプリカが昇格します。
-
PostgreSQL DB インスタンスの場合、クロスリージョンリードレプリカのソース DB インスタンスが削除されると、レプリケーションのステータスは
terminated
に設定されます。リードレプリカは昇格しません。リードレプリカを手動で昇格させるか、削除する必要があります。
クロスリージョンリードレプリカのリクエスト
ソースリージョンと通信してクロスリージョンリードレプリカの作成をリクエストするには、リクエスタ (IAM ロールまたは IAM ユーザー) がソース DB インスタンスとソースリージョンへのアクセス権を持っている必要があります。
リクエスタの IAM ポリシーの特定の条件により、リクエストが失敗する可能性があります。次の例では、ソース DB インスタンスが 米国東部 (オハイオ) にあり、リードレプリカが US East (N. Virginia) に作成されていることを前提としています。これらの例は、リクエストが失敗する原因となるリクエスタの IAM ポリシー内の条件を示しています。
-
リクエスタのポリシーには、
aws:RequestedRegion
の条件があります。... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }
ポリシーが出典リージョンへのアクセスを許可していないため、リクエストは失敗します。リクエストを正常に実行するには、ソースリージョンとコピー先リージョンの両方を指定します。
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
-
リクエスタのポリシーでは、ソース DB インスタンスへのアクセスが許可されていません。
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...
リクエストを正常に実行するには、ソースインスタンスとレプリカの両方を指定します。
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
-
リクエスターのポリシーが
aws:ViaAWSService
を拒否します。... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }
出典リージョンとの通信は、リクエスタに代わって RDS によって行われます。リクエストを正常に実行するには、AWS のサービスからの呼び出しを拒否しないでください。
-
リクエスターのポリシーには、
aws:SourceVpc
またはaws:SourceVpce
の条件があります。RDS がリモートリージョンへの呼び出しを行うとき、指定された VPC または VPC エンドポイントからの呼び出しではないため、これらのリクエストは失敗する可能性があります。
リクエストが失敗する原因となる前述の条件のいずれかを使用する必要がある場合は、ポリシーに aws:CalledVia
とともに 2 番目のステートメントを含めて、リクエストを成功させることができます。例えば、次のように aws:CalledVia
と aws:SourceVpce
を使用できます。
... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }
詳細については、IAM ユーザーガイド の 「IAM のポリシーとアクセス許可」を参照してください。
リードレプリカの承認
クロスリージョン DB のリードレプリカ作成リクエストが success
を返した後、RDS はバックグラウンドでレプリカの作成を開始します。RDS がソース DB インスタンスにアクセスするための承認が作成されます。この承認は、ソース DB インスタンスをリードレプリカにリンクし、RDS が指定されたリードレプリカにのみコピーできるようにします。
承認は、サービスにリンクされた IAM ロールの rds:CrossRegionCommunication
アクセス許可を使用して RDS によって検証されます。レプリカが承認されると、RDS はソースリージョンと通信し、レプリカの作成を完了します。
RDS は、CreateDBInstanceReadReplica
リクエストによって以前に承認されていない DB インスタンスにアクセスできません。リードレプリカの作成が完了すると、承認は取り消されます。
RDS は、サービスリンクされたロールを使用して、ソースリージョンでの承認を確認します。レプリケーション作成プロセス中にサービスリンクされたロールを削除すると、作成は失敗します。
詳細については、IAM ユーザーガイドの「サービスにリンクされたロールの使用」を参照してください。
AWS Security Token Service 認証情報の使用
グローバル AWS Security Token Service (AWS STS) エンドポイントからのセッショントークンは、デフォルトで有効になっている AWS リージョン (商用リージョン) でのみ有効です。assumeRole
の AWS STS API 操作からの認証情報を使用する場合、出典リージョンがオプトインリージョンである場合は、そのリージョンのエンドポイントを使用します。それ以外の場合、このリクエストは失敗します。これは、認証情報が両方のリージョンで有効である必要があるために発生します。これは、そのリージョンの AWS STS エンドポイントが使用されている場合にのみオプトインリージョンに当てはまります。
グローバルエンドポイントを使用するには、オペレーションで両方のリージョンで有効になっていることを確認します。Valid in all AWS Regions
アカウント設定でグローバルエンドポイントを AWS STS に設定します。
署名付き URL パラメータの認証情報にも同じルールが適用されます。
詳細については、IAM ユーザーガイド の「AWS リージョンでの AWS STS の管理」を参照してください。
クロスリージョンレプリケーションのコスト
クロスリージョンレプリケーションから転送されたデータには、Amazon RDS のデータ転送料金が発生します。以下のクロスリージョンレプリケーションアクションでは、ソース AWS リージョンから転送されるデータに対して料金が発生します。
-
リードレプリカを作成すると、Amazon RDS によりソースインスタンスのスナップショットが作成され、リードレプリカ AWS リージョンにスナップショットが転送されます。
-
ソースデータベースのデータに変更が加えられるたびに、Amazon RDS によりソース AWS リージョンからリードレプリカ AWS リージョンにデータが転送されます。
データ転送料金の詳細については、「Amazon RDS の料金
MySQL および MariaDB インスタンスの場合、作成するクロスリージョンリードレプリカの数を減らすことで、データ転送コストを削減できます。例えば、1 つの AWS リージョンにソース DB インスタンスがあり、別の AWS リージョンに 3 つのリードレプリカが必要であるとします。この場合、ソース DB インスタンスからリードレプリカを 1 つのみ作成します。他の 2 つのレプリカは、ソース DB インスタンスからではなく、最初のリードレプリカから作成します。
例として、ある source-instance-1
リージョンに AWS がある場合は、次のようにできます。
-
ソースとして
read-replica-1
を指定して、新しい AWS リージョンにsource-instance-1
を作成します。 -
read-replica-2
からread-replica-1
を作成します。 -
read-replica-3
からread-replica-1
を作成します。
この例では、source-instance-1
から read-replica-1
に転送されるデータ対してのみ課金されます。read-replica-1
から他の 2 つのレプリカに転送されたデータには課金されません。すべて同じ AWS リージョンにあるためです。3 つのレプリカをすべて source-instance-1
から直接作成した場合、3 つのレプリカすべてへのデータ転送に課金されます。