セクション 07 · タスク 2.2 · SAP-C02-055
Database Continuity Strategy
RDS マルチAZ / 読み取りレプリカ / Aurora グローバルデータベース / DynamoDB グローバルテーブル / フェイルオーバー / レプリケーション
ゴール
データベースの継続性要件から、RDS マルチAZ、読み取りレプリカ、Aurora グローバルデータベース、DynamoDB グローバルテーブルのどれを選ぶべきか判断できるようにします。
障害範囲
+
RTO / RPO
+
フェイルオーバー自動化
+
読み取り / 書き込みトポロジー
+
整合性要件
+
サービス機能 / 制約
↓
データベース継続性候補
↓
フェイルオーバー / 昇格 / ルーティング
↓
アプリケーションが復旧先へ到達できるか確認
レプリカの有無だけで高可用性を判断せず、障害範囲、切替方法、書き込み権限、利用可能なエンジン・リージョン・バージョンまで確認します。
1. データベース継続性は要件から選ぶ
データベースサービスには複数のレプリケーション機能がありますが、目的とフェイルオーバー動作は同じではありません。
| 候補 | 主な役割 | 復旧時の着眼点 |
|---|---|---|
| RDS マルチAZ | 同一-リージョン高可用性 | 自動フェイルオーバー |
| RDS 読み取りレプリカ | 読み取り用途 / DR 候補 | 昇格と接続先切替 |
| Aurora グローバルデータベース | クロスリージョン継続性 | 切り替え / フェイルオーバー |
| DynamoDB グローバルテーブル | マルチリージョンマルチアクティブ | アプリケーショントラフィックルーティング |
最初にサービス名を決めるのではなく、障害範囲、RTO/RPO、自動フェイルオーバーの必要性、読み取り/書き込みトポロジー、整合性要件から候補を絞ります。
2. RDS マルチAZには2つのデプロイタイプがある
Amazon RDSのマルチAZを1つのトポロジーとして覚えません。現在はマルチAZ DB インスタンスデプロイとマルチAZ DBクラスター デプロイを区別します。
| 観点 | マルチAZ DB インスタンス | マルチAZ DBクラスター |
|---|---|---|
| 基本構成 | プライマリ + スタンバイ | ライター + 2 リーダー |
| AZ | プライマリとスタンバイを別AZ | 3つのAZへ配置 |
| 読み取り利用 | スタンバイは通常アプリケーション読み取りに使わない | リーダーを読み取りトラフィックへ利用可能 |
| 目的 | 高可用性 | 高可用性 + 読み取りキャパシティ |
「RDS マルチAZのスタンバイはすべて読み取り不可」と一般化しません。デプロイタイプまで確認します。
3. マルチAZ DB インスタンスは同期スタンバイで高可用性を高める
マルチAZ DB インスタンスデプロイでは、プライマリ DB インスタンスとは別のAZにスタンバイを維持します。
アプリケーション
↓
プライマリ DB インスタンス
│
│ 同期レプリケーション
↓
スタンバイ DB インスタンス
異なるAZ
プライマリやAZの障害時はRDSがフェイルオーバーを管理します。スタンバイの主目的は読み取りスケーリングではなく、同一-リージョンでの高可用性と自動フェイルオーバーです。
4. マルチAZ DBクラスターはライター + 2 リーダーの半同期構成
マルチAZ DBクラスター デプロイでは、1つのライターと2つのリーダー DB インスタンスを3つのAZへ配置します。
AZ-A AZ-B AZ-C
ライター ───────→ リーダー
└────────────→ リーダー
変更
↓
2 リーダーへ送信
↓
少なくとも1 リーダーから確認応答
↓
コミット
レプリケーションは準同期です。リーダーは読み取りトラフィックを処理でき、フェイルオーバー対象にもなります。
このデプロイはRDS for MySQL / RDS for PostgreSQLを対象とし、利用可否はリージョンとエンジンバージョンでも確認します。エンジン名だけで利用可能と決めません。
5. 読み取りレプリカはマルチAZ スタンバイとは役割が異なる
RDS 読み取りレプリカは、送信元データベースからレプリカへ変更を非同期レプリケーションします。
送信元データベース
│
│ 非同期レプリケーション
↓
読み取りレプリカ
読み取り負荷が高い ワークロードを分離する用途に加え、対応するエンジン / デプロイではDR 候補としても利用できます。ただし、読み取りスケーリングそのものの設計は別のパフォーマンス要件として扱い、ここでは継続性に必要な違いを押さえます。
6. 読み取りレプリカをDRに使うなら昇格と接続先切替を設計する
読み取りレプリカを復旧先として使う場合、レプリカが存在するだけでは自動フェイルオーバーになりません。
送信元障害
↓
復旧先レプリカを確認
↓
昇格
↓
書き込み可能なデータベース
↓
アプリケーション接続 / ルーティングを切替
昇格とアプリケーションの接続先切替に必要な時間もRTOへ含めます。クロスリージョン読み取りレプリカは対応するエンジン、送信元/宛先リージョン、デプロイ条件を確認して候補にします。
7. RDS マルチAZと読み取りレプリカを使い分ける
| 判断軸 | RDS マルチAZ | RDS 読み取りレプリカ |
|---|---|---|
| 主目的 | 可用性 / 自動フェイルオーバー | 読み取り用途 / DR 候補 |
| レプリケーション | デプロイタイプに応じたHA レプリケーション | 非同期 |
| 障害範囲 | 主に同一-リージョンのインスタンス / AZ 障害 | 同一-リージョンまたは対応するクロスリージョン |
| DR時の切替 | RDSがフェイルオーバーを管理 | 昇格 / 接続切替を設計 |
リージョン規模の障害が要件なら、同一-リージョンマルチAZだけで完結させずクロスリージョン候補を評価します。
8. Aurora グローバルデータベースはクロスリージョン継続性の候補
Aurora グローバルデータベースでは、プライマリリージョンのクラスターが書き込み権限を持ち、セカンダリリージョンへクロスリージョンレプリケーションします。
プライマリリージョン
Aurora プライマリクラスター
書き込み権限
│
│ クロスリージョンレプリケーション
↓
セカンダリリージョン
Aurora セカンダリクラスター
リモート読み取り
リージョン規模の障害への備えとリモート読み取りを必要とするリレーショナルデータベースアーキテクチャで有力な候補です。
9. セカンダリからの書き込み転送でも書き込み権限はプライマリにある
対応するAurora バージョンでは、グローバル書き込み転送を有効化するとセカンダリクラスターで受けた書き込みステートメントをプライマリクラスターへ転送できます。
セカンダリリージョンアプリケーション
↓
セカンダリクラスター
↓ グローバル書き込み転送
プライマリクラスター
↓ 実際のデータ変更
セカンダリへレプリケーション
セカンダリ自身が独立してデータをコミットするマルチアクティブライターではありません。Aurora グローバルデータベースの単一プライマリの書き込み権限と、書き込みリクエストをセカンダリから送れることを分離して理解します。
10. Auroraでは切り替えとフェイルオーバーを分離する
計画された運用と予期しない障害では復旧動作が異なります。
| 運用 | 用途 | データ損失 |
|---|---|---|
| 切り替え | 計画されたプライマリリージョン変更 | セカンダリを同期してから切替するためRPO 0 |
| フェイルオーバー | プライマリリージョンの予期しない障害 | レプリケーション遅延に応じて通常はゼロではないRPO |
「Aurora グローバルデータベースならどの切替でもRPO 0」とは判断しません。
11. DynamoDB グローバルテーブルはマルチリージョンマルチアクティブ
DynamoDB グローバルテーブルでは、アプリケーションは各レプリカリージョンのDynamoDB エンドポイントへアクセスし、そのレプリカで読み取り / 書き込みできます。
リージョン A リージョン B
アプリケーションアプリケーション
↓ ↓
レプリカテーブル ←→ グローバルテーブル ←→ レプリカテーブル
読み取り / 書き込み読み取り / 書き込み
RDS 読み取りレプリカのようにスタンバイをプライマリへ昇格することを基本モデルにしません。リージョン規模の障害時は、正常リージョンのアプリケーションへユーザートラフィックを切り替え、そのリージョンのレプリカテーブルを利用します。
12. DynamoDB グローバルテーブルはMRECとMRSCを選択する
| 観点 | MREC | MRSC |
|---|---|---|
| レプリケーション | 非同期 | 書き込み成功前に少なくとも別リージョンへ同期 |
| 整合性 | マルチリージョン 結果整合性 整合性 | マルチリージョン強い整合性 |
| RPO | レプリケーション遅延に依存 | RPO 0 |
| 書き込みレイテンシー | 低くしやすい | リージョン間調整により増加し得る |
MRECでは同じ項目が複数リージョンで同時更新された場合、内部タイムスタンプに基づく最後の書き込みが優先で競合を解決します。
13. MRSCは3リージョンちょうどとリージョンセット制約を確認する
MRSCは任意のリージョン組み合わせで利用できるわけではありません。
3リージョンちょうど
3 レプリカ
または
2 レプリカ + 1 監視
かつ
同じMRSCリージョンセット内
現在のリージョンセットは次のとおりです。
| リージョンセット | リージョン |
|---|---|
| US | 米国東部 (バージニア北部) / 米国東部 (オハイオ) / 米国西部 (オレゴン) |
| EU | 欧州 (アイルランド) / 欧州 (ロンドン) / 欧州 (パリ) / 欧州 (フランクフルト) |
| AP | アジアパシフィック (東京) / アジアパシフィック (ソウル) / アジアパシフィック (大阪) |
リージョンセットをまたぐMRSC グローバルテーブルは構成できません。監視は可用性アーキテクチャへ参加しますが、アプリケーションから読み取り / 書き込みするレプリカではありません。
14. フェイルオーバーの意味はサービスごとに異なる
| 候補 | 障害時の主な動作 |
|---|---|
| RDS マルチAZ | RDSがスタンバイ / リーダーへ自動フェイルオーバー |
| RDS 読み取りレプリカ | レプリカ昇格とアプリケーション接続先切替 |
| Aurora グローバルデータベース | セカンダリリージョンへ切り替え / フェイルオーバー |
| DynamoDB グローバルテーブル | 正常リージョンのアプリケーション / レプリカへトラフィックルーティング |
同じ「レプリカがある」アーキテクチャでも、復旧運用は異なります。
15. データベースだけでなくエンドツーエンド復旧を確認する
復旧先データベースが利用可能でも、アプリケーションがそこへ到達できなければビジネスサービスは復旧しません。
データベース復旧
+
アプリケーション
DNS / ルーティング
ネットワーク
シークレット / KMS
認証
依存サービス
↓
エンドツーエンドサービス復旧
データベースフェイルオーバー完了時刻だけをRTOとせず、アプリケーション接続とトラフィックルーティングまで含めて復旧経路を確認します。
16. 要件から候補を選ぶ
| 要件 | 中心候補 |
|---|---|
| 同一-リージョン、自動 DB フェイルオーバー | RDS マルチAZ |
| RDSでリージョン規模の DR、昇格を許容 | 対応するクロスリージョン読み取りレプリカ |
| Auroraでリージョン規模の継続性 + リモート読み取り | Aurora グローバルデータベース |
| DynamoDBでマルチリージョンアクティブ処理、RPO > 0許容 | グローバルテーブル MREC |
| DynamoDBでグローバル強い整合性、RPO 0 | グローバルテーブル MRSC(リージョン制約も確認) |
17. 判断フロー
ビジネス RTO / RPO
↓
障害範囲
├─ インスタンス / AZ 障害
│ └─ RDS マルチAZを評価
└─ リージョン規模の障害
└─ クロスリージョン候補を評価
↓
自動フェイルオーバーが必要か
↓
昇格を許容できるか
↓
読み取り / 書き込みトポロジー
↓
整合性要件
↓
エンジン / リージョン / バージョン機能
↓
RDS マルチAZ
読み取りレプリカ
Aurora グローバルデータベース
DynamoDB グローバルテーブル
↓
フェイルオーバー / 昇格 / ルーティングを確認
↓
アプリケーションが復旧先へ到達可能か
↓
ビジネス RTO / RPOを満たすか評価18. 障害モード
| 誤った判断 | 問題 |
|---|---|
| RDS マルチAZならリージョン規模の障害にも対応できる | 同一-リージョン HAとマルチリージョン DRを混同している |
| マルチAZ スタンバイはすべて読み取りスケーリングに使える | DB インスタンスとDBクラスターを混同している |
| 読み取りレプリカがあれば自動フェイルオーバーになる | 昇格と接続切替を無視している |
| Aurora セカンダリは書き込みリクエストを一切受けられない | グローバル書き込み転送を考慮していない |
| Aurora グローバルデータベースならフェイルオーバーもRPO 0 | 切り替えと予期しない フェイルオーバーを混同している |
| DynamoDB グローバルテーブルは必ず結果整合性 整合性 | MRSCを考慮していない |
| MRSCなら任意の3 リージョンを選べる | リージョンセット制約を無視している |
| データベースが復旧すればサービスも復旧する | アプリケーションルーティングと依存関係を無視している |
まとめ
- RDS マルチAZは同一-リージョン高可用性と自動フェイルオーバーの中心候補。
- マルチAZ DB インスタンスとマルチAZ DBクラスターはトポロジー、読み取り利用、レプリケーション動作が異なる。
- マルチAZ DBクラスターはMySQL / PostgreSQLの対応リージョン・エンジンバージョンで利用し、ライター + 2 リーダーの半同期構成。
- RDS 読み取りレプリカは非同期レプリケーションで、DR利用時は昇格とアプリケーション接続切替を設計する。
- Aurora グローバルデータベースは単一プライマリの書き込み権限を維持しながらクロスリージョン継続性を提供する。
- 対応バージョンではセカンダリからグローバル書き込み転送できるが、実際のデータ変更はプライマリで行う。
- Auroraの切り替えはRPO 0、予期しない フェイルオーバーはレプリケーション遅延に応じてデータ損失を評価する。
- DynamoDB グローバルテーブルはマルチアクティブ。MRECは非同期 + LWW、MRSCは強い整合性 + RPO 0。
- MRSCは3リージョンちょうどで、同じMRSC リージョンセット内に3 レプリカまたは2 レプリカ + 1 監視を配置する。
- データベース復旧だけでなく、アプリケーションルーティングを含むエンドツーエンド復旧でRTO/RPOを評価する。
理解確認
このページの内容を16問で確認します。
理解確認16問へ →