DB インスタンスのリードレプリカの操作
リードレプリカは、DB インスタンスの読み取り専用コピーです。クエリをアプリケーションからリードレプリカにルーティングすることにより、プライマリ DB インスタンスの負荷を軽減できます。こうすることにより、単一 DB インスタンスの容量制約にとらわれることなく伸縮自在にスケールアウトし、読み取り負荷の高いデータベースワークロードに対応できます。
ソース DB インスタンスからリードレプリカを作成するには、Amazon RDS では、DB エンジン組み込みのレプリケーション機能を使用します。特定のエンジンでのリードレプリカの使用については、以下のセクションを参照してください。
ソース DB インスタンスからリードレプリカを作成すると、ソースがプライマリ DB インスタンスになります。プライマリ DB インスタンスに対して更新を行うと、Amazon RDS はリードレプリカに非同期的にコピーします。次の図は、ソース DB インスタンスが別のアベイラビリティーゾーン (AZ) のリードレプリカにレプリケートされる様子を示しています。クライアントにはプライマリ DB インスタンスへの読み取り/書き込みアクセス権、およびレプリカへの読み取り専用アクセス権があります。

リードレプリカは、レプリカに使用される DB インスタンスクラスと同じレートで標準 DB インスタンスとして請求されます。同じ AWS リージョン 内のソース DB インスタンスとリードレプリカ間のデータのレプリケーションで発生したデータ転送に対しては課金されません。詳細については、「クロスリージョンレプリケーションのコスト」および「Amazon RDS 向け DB インスタンスの請求」を参照してください。
トピック
Amazon RDS リードレプリカの概要
次のセクションでは、DB インスタンスのリードレプリカについて説明します。マルチ AZ DB クラスターのリードレプリカについては、「Amazon RDS のマルチ AZ DB クラスターのリードレプリカの操作」を参照してください。
トピック
リードレプリカのユースケース
以下のような状況では、ソース DB インスタンスに対する 1 つまたは複数のリードレプリカのデプロイが適している可能性があります。
-
読み込みが多いデータベースに対して 1 つの DB インスタンスの処理または I/O 機能を拡張します。このような過度の読み込みトラフィックを 1 つまたは複数のリードレプリカに割り振ることができます。
-
ソース DB インスタンスが利用可能でない場合に読み込みトラフィックを誘導します。場合によっては、バックアップまたは予定される保守による I/O 停止により、ソース DB インスタンスで I/O リクエストを取得できないことがあります。このような場合は、リードトラフィックをリードレプリカに誘導することができます。このようなユースケースの場合、ソース DB インスタンスを利用できないため、リードレプリカのデータは「古い」場合があるので注意が必要です。
-
ビジネスレポーティングまたはデータウェアハウジングでは、本稼働 DB インスタンスではなく、ビジネスレポーティングクエリをリードレプリカに対して実行します。
-
災害復旧の実装。プライマリ DB インスタンスで障害が発生した場合、災害対策ソリューションとして、リードレプリカをスタンドアロンインスタンスに昇格させることができます。
リードレプリカの仕組み
リードレプリカを作成したら、既存の DB インスタンスをソースとして指定します。次に、Amazon RDS でソースインスタンスのスナップショットを作成し、スナップショットから読み取り専用インスタンスを作成します。Amazon RDS では、DB エンジン用の非同期レプリケーションの方法を使用することで、プライマリ DB インスタンスに変更がある場合は必ずリードレプリカが更新されます。
リードレプリカは、読み取り専用接続のみを許可する DB インスタンスとして動作します。例外は RDS for Db2 エンジンと RDS for Oracle DB エンジンで、それぞれスタンバイモードとマウントされたモードでレプリカデータベースをサポートしています。スタンバイレプリカとマウントされたレプリカは、ユーザー接続を受け付けないため、読み取り専用のワークロードに対応できません。スタンバイレプリカとマウントされたレプリカの主な用途は、クロスリージョンのディザスタリカバリです。詳細については、「Amazon RDS for Db2 のレプリカの使用」および「Amazon RDS for Oracle でのリードレプリカの使用」を参照してください。
アプリケーションは、DB インスタンスの場合と同じ方法でリードレプリカに接続します。Amazon RDS では、ソース DB インスタンスからのすべてのデータベースがレプリケートされます。
リードレプリカは手動で作成する必要があります。RDS は、リードレプリカの自動スケーリングをサポートしていません。リードレプリカは、リード需要の変化に応じて自動的に追加または削除されます。
マルチ AZ 配置のリードレプリカ
マルチ AZ 配置で高可用性を持つように設定されたスタンバイレプリカもある DB インスタンスのリードレプリカを設定できます。スタンバイレプリカとのレプリケーションは同期的です。リードレプリカとは異なり、スタンバイレプリカは読み取りトラフィックを処理できません。
次のシナリオでは、クライアントは 1 つの AZ のプライマリ DB インスタンスへの読み取り/書き込みアクセス権を持っています。プライマリインスタンスは、更新を 2 番目の AZ のリードレプリカに非同期でコピーし、さらに 3 番目の AZ のスタンバイレプリカにも同期的にコピーします。クライアントはリードレプリカに対してのみ読み取りアクセス権を持ちます。

高可用性レプリカとスタンバイレプリカの詳細については、「Amazon RDS でのマルチ AZ 配置の設定と管理」を参照してください。
クロスリージョンリードレプリカ
リードレプリカは、そのプライマリ DB インスタンスとは異なる AWS リージョン に存在する場合があります。このような場合、Amazon RDS によりプライマリ DB インスタンスとリードレプリカ間の安全な通信チャネルが設定されます。Amazon RDS では、セキュリティグループエントリの追加など、安全なチャネルを有効にするために必要な AWS のセキュリティ設定を確立できます。クロスリージョンリードレプリカの詳細については、「別の AWS リージョン でのリードレプリカの作成」を参照してください。
この章の情報は、ソースの DB インスタンスと同じ AWS リージョン または別の AWS リージョン における Amazon RDS リードレプリカの作成に適用されます。以下の情報は、Amazon EC2 インスタンスまたはオンプレミスで実行されているインスタンスでレプリケーションをセットアップする場合には適用されません。
リードレプリカのストレージタイプ
デフォルトでは、ソース DB インスタンスと同じストレージタイプのリードレプリカが作成されます。ただし、次の表に示すオプションに基づいて、ソース DB インスタンスと別のストレージタイプを持つリードレプリカを作成することもできます。
ソース DB インスタンスストレージのタイプ | ソース DB インスタンスストレージの割り当て | リードレプリカのストレージタイプのオプション |
---|---|---|
プロビジョンド IOPS | 100 GiB - 64 TiB | プロビジョンド IOPS、汎用、マグネティック |
汎用 | 100 GiB - 64 TiB | プロビジョンド IOPS、汎用、マグネティック |
汎用 | 100 GiB 未満 | 汎用、マグネティック |
マグネティック | 100 GiB~6 TiB | プロビジョンド IOPS、汎用、マグネティック |
マグネティック | 100 GiB 未満 | 汎用、マグネティック |
注記
リードレプリカの割り当て済みストレージを増やす場合は、少なくとも 10% にする必要があります。10 パーセントに満たない単位で増やそうとすると、エラーになります。
レプリカからレプリカを作成する場合の制限事項
Amazon RDS では、循環レプリケーションはサポートされません。既存の DB インスタンスのレプリケーションソースとして機能するように DB インスタンスを設定することはできません。新しいリードレプリカは、既存の DB インスタンスからのみ作成することができます。例えば、MySourceDBInstance
が ReadReplica1
にレプリケートされる場合、ReadReplica1
に再度レプリケートされるように MySourceDBInstance
を設定することはできません。
MariaDB および RDS for MySQL、そして RDS for PostgreSQL の特定のバージョンでは、既存のリードレプリカからリードレプリカを作成することができます。例えば、既存のレプリカ ReadReplica1
から新しいリードレプリカ ReadReplica2
を作成できます。RDS for Db2、RDS for Oracle、RDS for SQL Server では、既存のリードレプリカからリードレプリカを作成することはできません。
レプリカを削除する際の注意事項
RDS はリードレプリカの自動スケーリングをサポートしていません。したがって、RDS は需要が増えてもレプリカの数を増やしたり、需要が減ってもレプリカの数を増やしたり減らしたりすることはありません。リードレプリカが不要になった場合は、DB インスタンスを削除するのと同じメカニズムを使用して、リードレプリカを手動で削除します。同じ AWS リージョンのリードレプリカを削除せずにソース DB インスタンスを削除すると、各レプリカはスタンドアロン DB インスタンスに昇格されます。
DB インスタンスの削除については、「DB インスタンスを削除する」を参照してください。リードレプリカの昇格の詳細については、「リードレプリカをスタンドアロン DB インスタンスに昇格させる」を参照してください。クロスリージョンリードレプリカのソース DB インスタンスの削除の関連情報については、「クロスリージョンレプリケーションに関する考慮事項」を参照してください。