Amazon RDS リードレプリカによって、Amazon RDS データベース (DB) インスタンスのパフォーマンスと耐久性が向上します。これを使用すれば、読み取り頻度の高いデータベースのワークロードに対して、単一 DB インスタンスキャパシティーの制約を超えて伸縮自在にスケールアウトできます。ソース DB インスタンスのレプリカを複数作成し、アプリケーションの大容量読み取りトラフィックをデータの複数のコピーから提供することにより、全体の読み込みスループットを向上させることができます。必要な場合は、リードレプリカをスタンドアロンの DB インスタンスに昇格させることも可能です。リードレプリカは Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle、SQL Server、Amazon Aurora で利用できます。
MySQL、MariaDB、PostgreSQL、Oracle、SQL Server のデータベースエンジンの場合、Amazon RDS ではソース DB インスタンスのスナップショットを使用して、2 番目の DB インスタンスを作成します。その後、ソース DB インスタンスが変更されるたびに、エンジンのネイティブ非同期レプリケーションを使用して、リードレプリカを更新します。リードレプリカは、読み取り専用接続のみ許可される DB インスタンスとして動作します。アプリケーションは、DB インスタンスの場合と同じ方法でリードレプリカに接続できます。Amazon RDS は、ソース DB インスタンスのすべてのデータベースを複製します。
Amazon Aurora は、データベースワークロード専用の SSD でバックアップされた仮想化ストレージレイヤーを採用することにより、リードレプリカの利点をさらに拡張します。Amazon Aurora レプリカはソースインスタンスと同じ基盤となるストレージを共有するので、コストが抑えられ、データをレプリカノードにコピーする必要がありません。Amazon Aurora によるレプリケーションの詳細については、オンラインドキュメントを参照してください。

利点
強化されたパフォーマンス
読み取りクエリをアプリケーションからリードレプリカにルーティングすることにより、ソース DB インスタンスへの負荷を減らすことができます。リードレプリカによって、1 つの DB インスタンスのキャパシティーを伸縮自在にスケールし、読み取り頻度の高いデータベースのワークロードを緩和できます。リードレプリカはプライマリステータスに昇格する場合があるため、シャーディングの実装として有用です。
読み取りパフォーマンスを最大限に高めるため、Amazon RDS for MySQL では、プライマリに存在しないテーブルインデックスを直接リードレプリカに追加できます。
可用性の向上
Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle、SQL Server のリードレプリカによって、Amazon RDS Multi-AZ 配置の可用性をさらに高めるメカニズムを実現できます。ソース DB インスタンスに障害が発生した場合は、リードレプリカを昇格できます。また、異なる AZ の独自のスタンバイインスタンスでリードレプリカを設定できます。これにより、マルチ AZ 配置が提供する同期レプリケーション、自動障害検出、フェイルオーバーといった機能が補完されます。
セキュリティのための設計
Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle、または SQL Server のリードレプリカを作成すると、Amazon RDS では、複数のリージョン間でレプリケート中であっても、ソース DB インスタンスとリードレプリカの間にパブリックキー暗号化を使用して安全な通信チャネルがセットアップされます。Amazon RDS は、セキュリティグループエントリの追加など、安全なチャネルを有効にするために必要な AWS セキュリティ設定を確立します。
また、AWS Key Management Service (KMS) を使用して保存時に暗号化された Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle、SQL Server データベースインスタンス向けに、1 つのリージョンまたはリージョン間でリードレプリカを作成できます。
設定
AWS マネジメントコンソールを使用して、リードレプリカを既存の DB インスタンスに簡単に追加できます。AWS マネジメントコンソールの DB インスタンスに対応する [Create Read Replica] を使用します。Amazon RDS for MySQL、MariaDB、および PostgreSQL では、各 DB インスタンスに最大 15 個のリードレプリカを追加できます。Amazon RDS for Oracle、SQL Server では、各 DB インスタンスに最大 5 個のリードレプリカを追加できます。
Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle では、データベースストレージに SSD ベースの 2 つの選択肢を提供しています。つまり汎用とプロビジョンド IOPS です。これらのエンジンのリードレプリカについては、プライマリ DB インスタンスと同じストレージタイプを使用する必要がありません。パフォーマンスや支出を最適化するため、リードレプリカには別のストレージタイプを選択できます。 詳細については、Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle、SQL Server、Amazon Aurora のリードレプリカドキュメントを参照してください。
リードレプリカ、マルチ AZ 配置、およびマルチリージョン配置
Amazon RDS リードレプリカは、マルチ AZ 配置を補完します。どちらの機能もデータのセカンドコピーを維持しますが、2 つの間には以下の違いがあります。
マルチ AZ 配置 |
マルチリージョン配置 |
リードレプリカ |
---|---|---|
主な目的は高可用性です |
主な目的は災害復旧とローカルパフォーマンスです |
主な目的はスケーラビリティです |
Aurora 以外: 同期レプリケーション、Aurora: 非同期レプリケーション |
非同期レプリケーション |
非同期レプリケーション |
Aurora 以外: プライマリインスタンスのみがアクティブです。Aurora: すべてのインスタンスがアクティブです。 |
すべてのリージョンにアクセスでき、読み取りに使用できます |
すべてのリードレプリカにアクセス可能で、読み込みのスケーリングに使用可能 |
Aurora 以外: 自動バックアップはスタンバイから取得されます。Aurora: 自動バックアップは共有ストレージレイヤーから取得されます。 |
各リージョンで自動バックアップを取得できます |
デフォルトではバックアップは構成されない |
1 つのリージョン内に常に 2 つ以上のアベイラビリティーゾーンを展開 |
各リージョンに対してマルチ AZ 配置が可能 |
アベイラビリティーゾーン内、AZ 間、またはリージョン間に配置可能 |
Aurora 以外: データベースエンジンのバージョンアップグレードはプライマリで実施されます。Aurora: すべてのインスタンスが一緒に更新されます。 |
Aurora 以外: データベースエンジンのバージョンアップグレードは各リージョンで独立しています。Aurora: すべてのインスタンスが一緒に更新されます。 |
Aurora 以外: データベースエンジンのバージョンアップグレードは、ソースインスタンスから独立しています。Aurora: すべてのインスタンスが一緒に更新されます。 |
問題が検出された場合のスタンバイ (Aurora 以外) またはリードレプリカ (Aurora) への自動フェイルオーバー |
Aurora は、セカンダリリージョンのプロモーションをプライマリにすることができます |
手動でスタンドアロンのデータベースインスタンス (Aurora 以外) またはプライマリインスタンス (Aurora) に昇格できます |
リードレプリカを他の Amazon RDS 機能と組み合わせて、それぞれの利点を享受できます。たとえば、ソースデータベースをマルチ AZ として高可用性で構成し、リードレプリカをリードスケーラビリティで (シングル AZ に) 作成できます。または、Aurora Global Database を使用して、マルチ AZ Aurora 配置から追加のリージョンにデータを複製できます。
RDS for MySQL、MariaDB、PostgreSQL、Oracle を使用して、リードレプリカをマルチ AZ として設定し、またリードレプリカを DR ターゲットとして使用することもできます。スタンドアロンデータベースにリードレプリカを昇格させると、マルチ AZ が有効になっています。