AWSのRDSでサポートされている、サーバ障害、アベイラビリティーゾーン(AZ)障害、リージョン障害の対応アーキテクチャをご紹介します。
RDSのMulti-AZ アクティブ/スタンバイ
RDSのインスタンスの高可用性およびフェイルオーバーを実現するには、Multi-AZを指定してデプロイします。
これにより、異なるアベイラビリティーゾーン(AZ)で同期スタンバイレプリカを自動的に構築し維持されます。
障害前
これによりプライマリRDSは、AZ間でスタンバイRDSに同期レプリケーションされ、データの冗長性を提供します。RDS障害やAZ障害からデータベースを保護する可能性を高めることができますし、計画メンテの際にも可用性を向上させることができます。
障害発生時
計画的な停止または障害を検知すると、Multi-AZ構成のプライマリRDSは別のAZのスタンバイRDSに自動的に切り替わります。
障害後
スタンバイRDSが起動されプライマリRDSとなると、元のAZで、新たにスタンバイRDSが⾃動的に再構築されます。
Multi-AZ アクティブ/スタンバイは、MariaDB、Microsoft SQL Server、MySQL、Oracle、PostgreSQL DB エンジンによりサポートされています。
RDSのリードレプリカ
RDSリードレプリカで、読み取りクエリをアプリケーションからリードレプリカにルーティングすることで、読み取り負荷をプライマリRDSからオフロードできます。読み取り高いデータベースワークロードに適しています。
ソースデータベースごとに最⼤5つのリードレプリカを作成可能です。
プライマリRDSに対して行った更新は、リードレプリカに非同期レプリケーションされます。非同期処理のため遅延が発生しますので、プライマリには更新処理とリアルタイムに参照が必要な参照処理を実⾏し、リードレプリカにはリアルタイムが不要な参照処理を実行させましょう。
障害後
障害のレベルがサーバ障害であれば、同一のアベイラビリティーゾーン(AZ)内のリードレプリカをスタンドアロンインスタンスに昇格させることで読み書き可能となりますので、これにより障害のフェールオーバーを行います。
障害のレベルがアベイラビリティーゾーン(AZ)全体の障害であれば、別のアベイラビリティーゾーン(AZ)内のリードレプリカをスタンドアロンインスタンスに昇格させることで読み書き可能となりますので、これにより障害のフェールオーバーを行います。
リードレプリカは、MariaDB、Microsoft SQL Server、MySQL、Oracle、PostgreSQL DB エンジンによりサポートされています。
Oracle レプリカは、Oracle Enterprise Edition (EE) エンジンでのみ使用することができ、かつActive Data Guard ライセンスが必要となります。
SQL Serverリードレプリカは、SQL Server Enterprise Edition (EE) エンジンでのみ使用することができます。
RDSのクロスリージョンリードレプリカ
災害発⽣時⽤に異なるリージョンにクロスリージョンリードレプリカを作成しておくことで災害対策にもなります。
障害後
障害のレベルがリージョン全体の障害であれば、別のリージョンのリードレプリカをスタンドアロンインスタンスに昇格させることで読み書き可能となりますので、これにより障害のフェールオーバーを行います。
クロスリージョンリードレプリカは、MariaDB、MySQL、Oracle、PostgreSQLエンジンによりサポートされています。
Oracle レプリカは、Oracle Enterprise Edition (EE) エンジンでのみ使用することができ、かつActive Data Guard ライセンスが必要となります。
RDSのクロスリージョン自動バックアップ
RDSのバックアップを自動的に別のリージョンにレプリケーションすることが出来ます。
プライマリ AWS リージョンからセカンダリ AWS リージョンへのシステムスナップショットとトランザクションログの自動レプリケーションが可能ですので、災害対策機能を向上させることができます。
クロスリージョン自動バックアップは、Oracle、PostgreSQL、Microsoft SQL Server エンジンによりサポートされています。
バックアップレプリケーションは、暗号化された SQL Server DB インスタンスではサポートされていません。