Amazon RDS リードレプリカによって、データベース (DB) インスタンスのパフォーマンスと耐久性が向上します。この機能によって、1 つの DB インスタンスのキャパシティーを伸縮自在にスケールし、読み取り頻度の高いデータベースのワークロードを緩和できます。ソース DB インスタンスのレプリカを複数作成し、アプリケーションの大容量読み取りトラフィックをデータの複数のコピーから提供することにより、全体の読み込みスループットを向上させることができます。必要な場合、リードレプリカをスタンドアロンの DB インスタンスに昇格させることも可能です。リードレプリカは Amazon RDS for MySQLMariaDBPostgreSQLAmazon Aurora で利用できます。

MySQL、MariaDB、PostgreSQL のデータベースエンジンの場合、Amazon RDS ではソース DB インスタンスのスナップショットを使用して、2 番目の DB インスタンスを作成します。その後、ソース DB インスタンスが変更されるたびに、エンジンのネイティブ非同期レプリケーションを使用して、リードレプリカを更新します。リードレプリカは、読み取り専用接続のみ許可される DB インスタンスとして動作します。アプリケーションは、DB インスタンスの場合と同じ方法でリードレプリカに接続できます。Amazon RDS は、ソース DB インスタンスのすべてのデータベースを複製します。

Amazon Aurora では、データベースワークロード専用に構築された、SSD でバックアップされた仮想化ストレージレイヤーが採用されています。Amazon Aurora レプリカはソースインスタンスと同じ基盤となるストレージを共有するので、コストが抑えられ、データをレプリカノードにコピーする必要がありません。Amazon Aurora によるレプリケーションの詳細については、オンラインドキュメントを参照してください。

AWS を無料で試す

無料アカウントの作成

AWS 無料利用枠では、1 年間毎月 750 時間 Micro DB Instance をご利用いただけるほか、20 GB のストレージや、Amazon Relational Database Service (RDS) を使用したバックアップ用の 20 GB のストレージもご利用いただけます。

AWS 無料利用枠の詳細はこちら

読み取りクエリをアプリケーションからリードレプリカにルーティングすることにより、ソース DB インスタンスへの負荷を減らすことができます。リードレプリカによって、1 つの DB インスタンスのキャパシティーを伸縮自在にスケールし、読み取り頻度の高いデータベースのワークロードを緩和できます。

読み取りパフォーマンスを最大限に高めるため、Amazon RDS for MySQL では、マスターに存在しないテーブルインデックスを直接リードレプリカに追加できます。

リードレプリカはマスターステータスに昇格する場合があるため、シャーディングの実装として有用です。データベースをシャードするには、リードレプリカを追加してマスターステータスに昇格させた後、DB インスタンスそれぞれから、もう一方のシャードに属するデータを消去します。

Amazon RDS for MySQL エンジンでは、リードレプリカに対してインデックスや新しい列の追加のようなテーブル全体に対するアクションを実行できるため、レプリカの昇格機能を使用してそれらのアクションの影響を最小化できます。アクションの DDL をリードレプリカにダイレクトし、そのリードレプリカをマスターステータスに昇格させた後、データベーストラフィックを新しいマスターにリダイレクトできます。

Amazon RDS for MySQL、MariaDB、および PostgreSQL のリードレプリカによって、Amazon RDS マルチ AZ 配置の可用性をさらに高めるメカニズムを実現できます。DB インスタンスが応答しない場合、リードレプリカを昇格させることができます。また DB インスタンスを AWS リージョン間で災害対策戦略の一部としてレプリケートできます。これにより、マルチ AZ 配置が提供する同期レプリケーション、自動障害検出、フェイルオーバーといった機能が補完されます。

Amazon RDS for MySQL、MariaDB、および PostgreSQL のリードレプリカを作成すると、Amazon RDS では、複数のリージョン間でレプリケート中であっても、ソース DB インスタンスとリードレプリカの間にパブリックキー暗号化を使用して安全な通信チャネルがセットアップされます。Amazon RDS は、セキュリティグループエントリの追加など、安全なチャネルを有効にするために必要な AWS セキュリティ設定を確立します。

また、AWS Key Management Service (KMS) を使用して保存時に暗号化された Amazon RDS for MySQL、MariaDB、PostgreSQL データベースインスタンス向けに、1 つのリージョンまたはリージョン間でリードレプリカを作成できます。

リードレプリカは標準の DB インスタンスと同様のレートで課金され、DB インスタンスクラスとリージョンが同じである標準の DB インスタンス予約 (RDS リザーブドインスタンス) をリードレプリカに適用できます。詳細については、Amazon RDS の料金ページを参照してください。

AWS マネジメントコンソールを使用して、リードレプリカを既存の DB インスタンスに簡単に追加できます。AWS マネジメントコンソールの DB インスタンスに対応する [Create Read Replica] を使用します。Amazon RDS for MySQL、MariaDB、および PostgreSQL では、各 DB インスタンスに最大 5 個のリードレプリカを追加できます。

Amazon RDS for MySQL、MariaDB、および PostgreSQL では、データベースストレージに SSD ベースの 2 つの選択肢を提供しています。それは、汎用とプロビジョンド IOPS です。これらのエンジンのリードレプリカについては、マスター DB インスタンスと同じストレージタイプを使用する必要がありません。パフォーマンスや支出を最適化するため、リードレプリカには別のストレージタイプを選択できます。

Amazon RDS リードレプリカは、マルチ AZ 配置を補完します。どちらの機能もデータのセカンドコピーを維持しますが、2 つの間には以下の違いがあります。

マルチ AZ 配置 リードレプリカ
同期レプリケーション – 高い耐久性 非同期レプリケーション – 高い拡張性
プライマリインスタンスのデータベースエンジンのみがアクティブ すべてのリードレプリカにアクセス可能で、読み込みのスケーリングに使用可能
スタンバイから自動バックアップを実行 デフォルトではバックアップは構成されない
1 つのリージョン内に常に 2 つのアベイラビリティーゾーンを展開 アベイラビリティーゾーン内、AZ 間、またはリージョン間に配置可能
データベースエンジンのバージョンアップグレードはプライマリで実施 データベースエンジンのバージョンアップグレードはソースインスタンスから独立
問題が検出されると、スタンバイに自動フェイルオーバー スタンドアロンのデータベースインスタンスに手動で昇格可能

マルチ AZ 配置とリードレプリカを組み合わせると、それぞれの特長の相乗効果が得られます。たとえば、ソースデータベースをマルチ AZ として高可用性で構成し、リードレプリカをリードスケーラビリティで (シングル AZ に) 作成できます。

RDS for MySQL および MariaDB を使用して、リードレプリカをマルチ AZ として設定し、リードレプリカを DR ターゲットとして使用することもできます。スタンドアロンデータベースにリードレプリカを昇格させると、マルチ AZ が有効になっています。RDS for PostgreSQL ではまだこの機能はサポートされていません。