リレーショナルデータベースの構築・運用を自動化するマネージドサービス
マルチAZ(Multi-AZ)は、RDS が自動的に別の Availability Zone にスタンバイインスタンスを作成し、プライマリと同期してデータを複製する高可用性の仕組みです。プライマリへの書き込みはスタンバイにも同時にコミットされるため、フェイルオーバー時のデータ損失はゼロ(RPO = 0)です。
SLA 99.95% の可用性を提供し、AZ 障害・インスタンス障害・メンテナンス時に自動フェイルオーバーが行われます。アプリケーション側の変更は不要で、RDS エンドポイント(CNAME)が自動的に新プライマリを指すように更新されます。
マルチAZは可用性(HA)のための機能であり、読み取りスケーリングには別途 Read Replica を使用します。スタンバイインスタンスはフェイルオーバー専用で、通常時は直接アクセスできません。
Primary に障害が発生すると、60〜120秒で Standby が新 Primary に自動昇格します。手動介入は不要で、エンドポイント(CNAME)が自動更新されるためアプリケーションの接続文字列を変更する必要はありません。
書き込みは Primary と Standby の両方にコミットされた後に完了します。これにより、フェイルオーバー時のデータ損失がゼロ(RPO = 0)になります。ただし、非同期レプリケーション(Read Replica)と比較すると書き込みレイテンシが若干増加します。
Standby インスタンスは Primary と同じスペックで作成されるため、インスタンス料金が約2倍になります。ただし、ストレージは共有されないため EBS 料金も別途発生します。本番環境ではコストより可用性を優先すべきです。
OS パッチやエンジンアップグレード時は、まずStandby にパッチを適用→ フェイルオーバー → 旧 Primary(現 Standby)にパッチ適用の順で行われます。これによりダウンタイムはフェイルオーバーの60〜120秒のみに抑えられます。
マルチAZでは同期レプリケーション(Synchronous Replication)が使われます。クライアントが書き込みを送ると、プライマリはスタンバイに WAL(トランザクションログ)を転送し、スタンバイからの ACK を受け取った後にコミット完了をクライアントに返します。
この「両方コミット完了してから応答」という仕組みにより、フェイルオーバー時のデータ損失がゼロ(RPO = 0)になります。ただし、スタンバイの ACK を待つ分だけ書き込みレイテンシがわずかに増加します。非同期レプリケーション(Read Replica)との最大の違いは、この応答タイミングにあります。
コミットは Primary と Standby の両方に書き込まれてから完了。データ損失ゼロ。Standby への読み取りアクセスは不可。可用性が目的。
Primary のコミット完了後に非同期でレプリカに反映。わずかなレプリケーションラグあり。レプリカへの読み取りアクセスが可能。読み取りスケーリングが目的。
マルチAZのフェイルオーバーは完全自動で行われ、手動介入は不要です。全体の所要時間(RTO)は通常60〜120秒で、同期レプリケーションによりデータ損失はゼロ(RPO = 0)です。
以下のいずれかが発生すると、RDS が自動的にフェイルオーバーを開始します:
AZ 障害 — AZ 全体が利用不能になった場合インスタンス障害 — Primary のハードウェア障害やOS障害ネットワーク到達不能 — Primary への通信が途絶した場合ストレージ障害 — Primary の EBS ボリュームに障害が発生メンテナンス — OS パッチ適用、インスタンスタイプ変更、エンジンアップグレード手動実行 — aws rds reboot-db-instance --force-failoverRDS の内部ヘルスチェック機構が Primary の異常を検知します。検知は数秒以内に行われ、検知後すぐに DNS 切替プロセスが開始されます。CloudWatch の RDSEventNotification でフェイルオーバーイベントが通知されます。
RDS エンドポイントは DNS の CNAME レコードで実装されています。フェイルオーバー時は、CNAME が指す先の IP アドレスが旧 Primary から Standby(新 Primary)に自動更新されます。DNS TTL は短く設定されているため(通常5秒)、クライアントは素早く新しい IP を解決できます。この仕組みにより、アプリケーションの接続文字列を変更する必要がありません。
Standby DB が新しい Primary に昇格します。昇格プロセスでは、最後のトランザクションログの適用 → リカバリ処理 → 読み書き可能モードへの切り替えが行われます。同期レプリケーションにより Standby は常に最新データを持っているため、データ損失はゼロ(RPO = 0)です。
フェイルオーバー完了後、RDS は自動的に新しい Standby インスタンスを別の AZ に構築します。この間は一時的に冗長性が低下しますが、構築完了後に再びマルチAZの可用性が確保されます。手動操作は不要です。
networkaddress.cache.ttl=5)を実装してください。RDS では用途に応じた複数のエンドポイントが提供されます。接続先を正しく使い分けることが、可用性とパフォーマンスの両立に重要です。RDS エンドポイントはCNAME レコードで実装されており、フェイルオーバー時は CNAME が指す IP アドレスのみが変わります。アプリケーションの接続文字列はそのままで構いません。
常に現在の Primary DB を指す CNAME レコードです。フェイルオーバー時に自動的に新 Primary に切り替わるため、アプリケーションの接続文字列を変更する必要がありません。書き込み・読み取りの両方に使えます。
CNAME レコードの動き(通常時)
リードレプリカへの読み取りクエリをロードバランシングするエンドポイントです。複数のリードレプリカがある場合、接続が自動的に分散されます。Aurora クラスターでは標準提供されますが、通常の RDS では各レプリカに個別エンドポイントが割り当てられます。
特定のインスタンスに直接接続するエンドポイントです。Primary・Standby・各リードレプリカそれぞれに固有のエンドポイントがあります。トラブルシューティングや特定レプリカへの接続に使いますが、通常のアプリケーションではクラスターエンドポイントを使うべきです。

Apache Spark/Hadoopなどのビッグデータフレームワークをマネージド実行するサービス

Dockerコンテナのデプロイ・管理・スケーリングを行うコンテナオーケストレーションサービス

オンプレミスのストレージをAWSクラウドストレージとシームレスに連携するハイブリッドサービス

リソース設定の変更履歴記録・コンフォーマンスルール評価・SSM Automationによる自動修復・コンフォーマンスパックを可視化

AWSサービス全体のバックアップを一元管理・自動化するフルマネージドバックアップサービス

サーバー管理不要でコードを実行できるサーバーレスコンピューティングサービス