マルチ AZ DB クラスターのリードレプリカの操作 - Amazon Relational Database Service

マルチ AZ DB クラスターのリードレプリカの操作

DB クラスターのリードレプリカは、ソース DB インスタンスから作成する特殊なタイプのクラスターです。リードレプリカの作成後、プライマリ DB インスタンスに加えられた更新は、マルチ AZ DB クラスターのリードレプリカに非同期的にコピーされます。読み込みクエリをアプリケーションからリードレプリカにルーティングすることにより、プライマリ DB インスタンスの負荷を軽減できます。リードレプリカを使うと、単一 DB インスタンスのキャパシティ制約にとらわれることなく伸縮自在にスケールアウトし、読み込み負荷の高いデータベースワークロードに対応できます。

また、マルチ AZ DB クラスターから 1 つ以上の DB インスタンスのリードレプリカを作成できます。DB インスタンスのリードレプリカでは、余分な読み取りトラフィックをリードレプリカに送信することで、ソースマルチ AZ DB クラスターのコンピューティングまたは I/O のキャパシティを超えてスケーリングできます。現在、既存のマルチ AZ DB クラスターからマルチ AZ DB クラスターのリードレプリカを作成することはできません。

リードレプリカを使用してマルチ AZ DB クラスターに移行する

シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターデプロイに少ないダウンタイムで移行するには、マルチ AZ DB クラスターリードレプリカを作成します。ソースとして、シングル AZ デプロイの DB インスタンス、またはマルチ AZ DB インスタンスデプロイのプライマリ DB インスタンスを指定します。DB インスタンスは、マルチ AZ DB クラスターへの移行時に書き込みトランザクションを処理できます。

以下は、マルチ AZ DB クラスターのリードレプリカを作成する前の考慮事項です。

  • ソース DB インスタンスは、マルチ AZ DB クラスターをサポートするバージョンである必要があります。詳細については、「Amazon RDS のマルチ AZ DB クラスターでサポートされているリージョンと DB エンジン」を参照してください。

  • マルチ AZ DB クラスターのリードレプリカは、ソースと同じメジャーバージョンで、同じかそれ以上のマイナーバージョンでなければなりません。

  • バックアップ保持期間を 0 以外の値に設定することで、ソース DB インスタンスで自動バックアップを有効にする必要があります。

  • ソース DB インスタンスに割り当てられるストレージは 100 GiB 以上でなければなりません。

  • RDS for MySQL では、gtid-modeenforce_gtid_consistency パラメータの両方は、ソース DB インスタンスの ON に設定する必要があります。デフォルトのパラメータグループではなく、カスタムパラメータグループを使用する必要があります。詳細については、「Amazon RDS DB インスタンスの DB パラメータグループ」を参照してください。

  • アクティブな長時間実行トランザクションの場合、リードレプリカの作成プロセスに時間がかかることがあります。長時間実行トランザクションが完了してから、リードレプリカを作成することをお勧めします。

  • マルチ AZ DB クラスターのリードレプリカのソース DB インスタンスを削除した場合、リードレプリカはスタンドアロンのマルチ AZ DB クラスターに昇格されます。

マルチ AZ DB クラスターのリードレプリカの作成と昇格

マルチAZ DB クラスターのリードレプリカの作成と昇格には、AWS Management Console、AWS CLI、または RDS API を使用します。

注記

ソース DB インスタンスの Amazon VPC に基づいて、すべてのリードレプリカを同じ仮想プライベートクラウド (VPC) に作成することを強くお勧めします。

リードレプリカをソース DB インスタンスとは異なる VPC に作成すると、クラスレスドメイン間ルーティング (CIDR) の範囲がレプリカと Amazon RDS システムとの間で重複する可能性があります。CIDR が重複すると、レプリカが不安定になり、レプリカに接続するアプリケーションに悪影響を及ぼす可能性があります。リードレプリカの作成時にエラーが発生した場合は、別のターゲット DB サブネットグループを選択します。詳細については、「VPC 内の DB インスタンスの使用」を参照してください。

リードレプリカを使用してシングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターに移行するには、AWS Management Console を使用して次の手順を実行します。

  1. AWS Management Consoleにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. マルチ AZ DB クラスターのリードレプリカを作成します。

    1. ナビゲーションペインで、[データベース] を選択します。

    2. リードレプリカのソースとして使用する DB インスタンスを選択します。

    3. [アクション] で [リードレプリカの作成] を選択します。

    4. [Availability and durability] (可用性と耐久性) で、[Multi-AZ DB cluster] (マルチ AZ DB クラスター) を選択します。

    5. DB インスタンス識別子に、リードレプリカの名前を入力します。

    6. 残りのセクションで、DB クラスター設定を指定します。設定の詳細については、「マルチ AZ DB クラスターを作成するための設定」を参照してください。

    7. [Create read replica] を選択します。

  3. 準備ができたら、リードレプリカをスタンドアロンのマルチ AZ DB クラスターに昇格します。

    1. トランザクションがソース DB インスタンスに書き込まれるのを停止して、すべての更新がリードレプリカに反映されるまで待ちます。

      データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。このレプリケーションのラグは大きく異なる可能性があります。ReplicaLag メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「リードレプリケーションのモニタリング」を参照してください。

    2. AWS Management Consoleにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

    3. Amazon RDS コンソールで、[Databases (データベース)] を選択します。

      [Databases (データベース)] ペインが表示されます。各リードレプリカには、[Role (ロール)] 列に [Replica (レプリカ)] があります。

    4. 昇格するマルチ AZ DBクラスターのリードレプリカを選択します。

    5. [アクション] で、[Promote (昇格)] を選択します。

    6. [Promote read replica] (リードレプリカの昇格) ページで、新しく昇格されたマルチ AZ DB クラスターのバックアップ保持期間とバックアップウィンドウを入力します。

    7. 希望通りの設定になったら、[Promote read replica] (リードレプリカの昇格) を選択します。

    8. 昇格されたマルチ AZ DB クラスターのステータスが Available になるまで待ちます。

    9. 昇格されたマルチ AZ DB クラスターを使用するようにアプリケーションに指示します。

    必要に応じて、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイが不要になった場合は削除します。手順については、DB インスタンスを削除する を参照してください。

リードレプリカを使用してシングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターに移行するには、AWS CLI を使用して次の手順を実行します。

  1. マルチ AZ DB クラスターのリードレプリカを作成します。

    ソース DB インスタンスからリードレプリカを作成するには、AWS CLI コマンド create-db-cluster を使用します。--replication-source-identifier として、ソース DB インスタンスの Amazon リソースネーム (ARN) を指定します。

    Linux、macOS、Unix の場合:

    aws rds create-db-cluster \ --db-cluster-identifier mymultiazdbcluster \ --replication-source-identifier arn:aws:rds:us-east-2:123456789012:db:mydbinstance --engine postgres \ --db-cluster-instance-class db.m5d.large \ --storage-type io1 \ --iops 1000 \ --db-subnet-group-name defaultvpc \ --backup-retention-period 1

    Windows の場合:

    aws rds create-db-cluster ^ --db-cluster-identifier mymultiazdbcluster ^ --replication-source-identifier arn:aws:rds:us-east-2:123456789012:db:mydbinstance --engine postgres ^ --db-cluster-instance-class db.m5d.large ^ --storage-type io1 ^ --iops 1000 ^ --db-subnet-group-name defaultvpc ^ --backup-retention-period 1
  2. トランザクションがソース DB インスタンスに書き込まれるのを停止して、すべての更新がリードレプリカに反映されるまで待ちます。

    データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。このレプリケーションのラグは大きく異なる可能性があります。Replica Lag メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「リードレプリケーションのモニタリング」を参照してください。

  3. 準備ができたら、リードレプリカをスタンドアロンのマルチ AZ DB クラスターに昇格します。

    マルチ AZ DB クラスターのリードレプリカを昇格するには、AWS CLI コマンド promote-read-replica-db-cluster を使用します。--db-cluster-identifier として、マルチ AZ DB クラスターリードレプリカの ID を指定します。

    aws rds promote-read-replica-db-cluster --db-cluster-identifier mymultiazdbcluster
  4. 昇格されたマルチ AZ DB クラスターのステータスが Available になるまで待ちます。

  5. 昇格されたマルチ AZ DB クラスターを使用するようにアプリケーションに指示します。

必要に応じて、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイが不要になった場合は削除します。手順については、DB インスタンスを削除する を参照してください。

リードレプリカを使用してシングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイをマルチ AZ DB クラスターに移行するには、RDS AAPI を使用して次の手順を実行します。

  1. マルチ AZ DB クラスターのリードレプリカを作成します。

    マルチ AZ DB クラスターのリードレプリカを作成するには、必須パラメータ DBClusterIdentifier を指定して、CreateDBCluster オペレーションを使用します。ReplicationSourceIdentifier として、ソース DB インスタンスの Amazon リソースネーム (ARN) を指定します。

  2. トランザクションがソース DB インスタンスに書き込まれるのを停止して、すべての更新がリードレプリカに反映されるまで待ちます。

    データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。このレプリケーションのラグは大きく異なる可能性があります。Replica Lag メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「リードレプリケーションのモニタリング」を参照してください。

  3. 準備ができたら、リードレプリカをスタンドアロンのマルチ AZ DB クラスターに昇格します。

    マルチ AZ DB クラスターのリードレプリカを昇格するには、必須パラメータ DBClusterIdentifier を指定して、PromoteReadReplicaDBCluster オペレーションを使用します。マルチ AZ DB クラスターリードレプリカの ID を指定します。

  4. 昇格されたマルチ AZ DB クラスターのステータスが Available になるまで待ちます。

  5. 昇格されたマルチ AZ DB クラスターを使用するようにアプリケーションに指示します。

必要に応じて、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイが不要になった場合は削除します。手順については、DB インスタンスを削除する を参照してください。

マルチ AZ DB クラスターのリードレプリカの作成に関する制限事項

次の制限は、シングル AZ デプロイまたはマルチ AZ DB インスタンスデプロイから マルチ AZ DB クラスターのリードレプリカを作成する際に適用されます。

  • ソース DB インスタンスを所有する AWS アカウント とは異なる AWS アカウント では、マルチ AZ DB クラスターのリードレプリカを作成することはできません。

  • マルチ AZ DB クラスターのリードレプリカは、ソース DB インスタンスとは異なる AWS リージョン で作成することはできません。

  • マルチ AZ DB クラスターのリードレプリカを指定の時点に復元することはできません。

  • ストレージ暗号化は、ソース DB インスタンスとマルチ AZ DB クラスターで同じ設定にする必要があります。

  • ソース DB インスタンスが暗号化されている場合、マルチ AZ DB クラスターのリードレプリカは同じ KMS キーを使用して暗号化する必要があります。

  • ソース DB インスタンスが汎用 SSD (gp3) ストレージを使用しており、割り当てられたストレージが 400 GiB 未満の場合、マルチ AZ DB クラスターのリードレプリカのプロビジョンド IOPS は変更できません。

  • ソース DB インスタンスでマイナーバージョンアップグレードを実行するには、まず、マルチ AZ DB クラスターリードレプリカでマイナーバージョンアップグレードを実行する必要があります。

  • RDS for PostgreSQL マルチ AZ DB クラスターのリードレプリカでマイナーバージョンアップグレードを実行すると、アップグレード後にリーダー DB インスタンスがライター DB インスタンスに切り替えられません。したがって、Amazon RDS がライターインスタンスをアップグレードしている間に、DB クラスターでダウンタイムが発生する可能性があります。

  • マルチ AZ DB クラスターのリードレプリカでメジャーバージョンアップグレードを実行することはできません。

  • マルチ AZ DB クラスターリードレプリカのソース DB インスタンスでメジャーバージョンアップグレードを実行できますが、リードレプリカへのレプリケーションは停止し、再開できません。

  • マルチ AZ DB クラスターのリードレプリカは、カスケードリードレプリカをサポートしていません。

  • RDS for PostgreSQL では、マルチ AZ DB クラスターのリードレプリカはフェイルオーバーできません。

マルチ AZ DB クラスターからの DB インスタンスリードレプリカの作成

クラスターのコンピューティングまたは I/O のキャパシティを超えてスケーリングするために、マルチ AZ DB クラスターから DB インスタンスのリードレプリカを作成できます。このような過度の読み込みトラフィックを 1 つまたは複数の DB インスタンスのリードレプリカに割り振ることができます。また、リードレプリカを使用して、マルチ AZ DB クラスターから DB インスタンスに移行することもできます。

リードレプリカを作成するには、マルチ AZ DB クラスターをレプリケーションソースとして指定します。ライターインスタンスではなく、マルチ AZ DB クラスターのリーダーインスタンスのいずれかが常にレプリケーションのソースです。この条件により、フェイルオーバーが発生した場合でも、レプリカは常にソースクラスターと同期されます。

リーダー DB インスタンスと DB インスタンスのリードレプリカの比較

マルチ AZ DB クラスターの DB インスタンスのリードレプリカは、マルチ AZ DB クラスターのリーダー DB インスタンスと次の点で異なります。

  • リーダー DB インスタンスは自動フェイルオーバーターゲットとして機能しますが、DB インスタンスのリードレプリカにその機能はありません。

  • リーダー DB インスタンスは、変更をコミットする前に、ライター DB インスタンスからの変更を確認する必要があります。ただし、DB インスタンスのリードレプリカの場合、更新は確認を必要とせずにリードレプリカに非同期的にコピーされます。

  • リーダー DB インスタンスは、マルチ AZ DB クラスターのライター DB インスタンスと常に同じインスタンスクラス、ストレージタイプ、およびエンジンバージョンを共有します。ただし、DB インスタンスのリードレプリカは、必ずしもソースクラスターと同じ設定を共有する必要はありません。

  • DB インスタンスのリードレプリカをスタンドアロン DB インスタンスに昇格させることができます。マルチ AZ DB クラスターの DB インスタンスをスタンドアロンインスタンスに昇格することはできません。

  • リーダーエンドポイントは、マルチ AZ DB クラスターのリーダー DB インスタンスにのみリクエストをルーティングします。DB インスタンスのリードレプリカにリクエストをルーティングすることはありません。

リーダーおよびライター DB インスタンスの詳細については、「マルチAZ DB クラスターの概要」を参照してください。

考慮事項

マルチ AZ DB クラスターから DB インスタンスのリードレプリカを作成する前に以下を検討してください。

  • DB インスタンスのリードレプリカを作成するとき、ソースクラスターと同じメジャーバージョンで、同じかそれ以上のマイナーバージョンでなければなりません。作成後、オプションでリードレプリカをソースクラスターよりも上位のマイナーバージョンにアップグレードできます。

  • DB インスタンスのリードレプリカを作成する場合、割り当てられるストレージは、ソースのマルチ AZ DB クラスターに割り当てられたストレージと同じである必要があります。割り当てられたストレージは、リードレプリカの作成後に変更できます。

  • RDS for MySQL の場合、ソースマルチ AZ DB クラスターでは、gtid-mode パラメータを ON に設定する必要があります。詳細については、「マルチ AZ DB クラスターの DB クラスターパラメータグループを使用する」を参照してください。

  • アクティブな長時間実行トランザクションの場合、リードレプリカの作成プロセスに時間がかかることがあります。長時間実行トランザクションが完了してから、リードレプリカを作成することをお勧めします。

  • DB インスタンスのリードレプリカのソースマルチ AZ DB インスタンスを削除した場合、書き込み先のリードレプリカはスタンドアロン DB インスタンスに昇格されます。

DB インスタンスのリードレプリカの作成

AWS Management Console、AWS CLI、または RDS API を使用して、マルチ AZ DB クラスターから DB インスタンスのリードレプリカを作成できます。

注記

ソースマルチ AZ DB クラスターの Amazon VPC に基づいて、すべてのリードレプリカを同じ仮想プライベートクラウド (VPC) に作成することを強くお勧めします。

リードレプリカをソースマルチ AZ DB クラスターとは異なる VPC に作成すると、Classless Inter-Domain Routing (CIDR) の範囲がレプリカと RDS システムとの間で重複する可能性があります。CIDR が重複すると、レプリカが不安定になり、レプリカに接続するアプリケーションに悪影響を及ぼす可能性があります。リードレプリカの作成時にエラーが発生した場合は、別のターゲット DB サブネットグループを選択します。詳細については、「VPC 内の DB インスタンスの使用」を参照してください。

マルチ AZ DB インスタンスリードレプリカを作成するには、AWS Management Console を使用して次のステップを実行します。

  1. AWS Management Consoleにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

  3. リードレプリカのソースとして使用するマルチ AZ DB クラスターを選択します。

  4. [アクション] で [リードレプリカの作成] を選択します。

  5. レプリカソースに、正しいマルチ AZ DB クラスターが選択されていることを確認してください。

  6. DB 識別子に、リードレプリカの名前を入力します。

  7. 残りのセクションで、DB インスタンス設定を指定します。設定の詳細については、「DB インスタンスの設定」を参照してください。

    注記

    DB インスタンスのリードレプリカに割り当てられたストレージは、ソースマルチ AZ DB クラスターに割り当てられたストレージと同じである必要があります。

  8. [Create read replica] を選択します。

マルチ AZ DB クラスターから DB インスタンスのリードレプリカを作成するには、AWS CLI コマンド create-db-instance-read-replica を使用します。--source-db-cluster-identifier には、マルチ AZ DB クラスターの識別子を指定します。

Linux、macOS、Unix の場合:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-cluster-identifier mymultiazdbcluster

Windows の場合:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-cluster-identifier mymultiazdbcluster

マルチ AZ DB クラスターから DB インスタンスのリードレプリカを作成するには、CreateDBInstanceReadReplica オペレーションを使用します。

DB インスタンスのリードレプリカの昇格

DB インスタンスのリードレプリカが不要になった場合は、スタンドアロン DB インスタンスに昇格できます。リードレプリカを昇格させると、使用可能になる前に DB インスタンスが再起動されます。手順については、リードレプリカをスタンドアロン DB インスタンスに昇格させる を参照してください。

リードレプリカを使用してシングル AZ DB クラスターデプロイをシングル AZ またはマルチ AZ DB インスタンスデプロイに移行している場合は、ソース DB クラスターに書き込まれるトランザクションを必ず停止してください。次に、リードレプリカにすべての更新が行われるまで待ちます。データベースの更新は、マルチ AZ DB クラスターのリーダー DB インスタンスのいずれかで行われた後にリードレプリカで実行されます。このレプリケーションのラグは大きく異なる可能性があります。ReplicaLag メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。レプリカラグの詳細については、「リードレプリケーションのモニタリング」を参照してください。

リードレプリカを昇格させたら、昇格した DB インスタンスのステータスが Available になるのを待ってから、昇格した DB インスタンスを使用するようアプリケーションに指示します。必要に応じて、マルチ AZ DB クラスターデプロイが不要になった場合は削除することもできます。手順については、マルチ AZ DB クラスターの削除 を参照してください。

マルチ AZ DB クラスターからの DB インスタンスリードレプリカの作成に関する制限事項

次の制限事項は、マルチ AZ DB インスタンスデプロイから DB インスタンスのリードレプリカを作成する際に適用されます。

  • ソースマルチ AZ DB クラスターを所有する AWS アカウント とは異なる AWS アカウント では、 DB インスタンスのリードレプリカを作成することはできません。

  • ソースマルチ AZ DB クラスターとは異なる AWS リージョン で DB インスタンスのリードレプリカを作成することはできません。

  • DB インスタンスのリードレプリカを指定の時点に復元することはできません。

  • ストレージ暗号化は、ソースマルチ AZ DB クラスターと DB インスタンスのリードレプリカで同じ設定にする必要があります。

  • ソースマルチ AZ DB クラスターが暗号化されている場合、DB インスタンスのリードレプリカは同じ KMS キーを使用して暗号化する必要があります。

  • ソースマルチ AZ DB クラスターでマイナーバージョンアップグレードを実行するには、まず、DB インスタンスのリードレプリカでマイナーバージョンアップグレードを実行する必要があります。

  • DB インスタンスのリードレプリカは、カスケードリードレプリカをサポートしていません。

  • RDS for PostgreSQL の場合、DB インスタンスのリードレプリカを作成するには、ソースのマルチ AZ DB クラスターは PostgreSQL バージョン 13.11、14.8、または 15.2.R2 以降を実行している必要があります。

  • DB インスタンスリードレプリカのマルチ AZ DB クラスターでメジャーバージョンアップグレードを実行できますが、リードレプリカへのレプリケーションが停止し、再開できません。