DB インスタンスのフェイルオーバーが発生しました。原因を特定する方法を教えてください。

テクニカルサポートノート。サービス名:RDS, Aurora, フェイルオーバー
2020.04.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Amazon RDS のマルチ AZ 配置を使用しています。 一時的に DB インスタンスへの接続ができない状態が発生していたため、フェイルオーバーが発生していたと思われます。 DB インスタンスがフェイルオーバーした原因を特定する方法を教えてください。

どう対応すればいいの?

Service Health Dashboard の確認

AWS Service Health Dashboard

  • 必ずしもリアルタイムではないため、現在発生している問題であれば以下確認を進める
  • リージョン毎に情報提供されるので適切なリージョンを選択する
  • Availability Zone (AZ)単位では情報提供されない
    • AZと物理的な環境のマッピングはアカウント毎に異なるため
    • アカウント A の ap-northeast-1a とアカウント B の ap-northeast-1a は物理的には異なる可能性がある
  • 大規模な障害を告知するものであるためアカウント固有の障害の場合は告知されない

Personal Health Dashboard の確認

  • アカウント固有の環境に影響する障害やメンテナンス情報がないか確認する
  • メンテナンスであれば事前に告知されていた可能性があるため過去にさかのぼって確認する

AWS レイヤーの確認

  • 事象発生時間帯付近の CloudWatch メトリクスを確認する
    • CPUUtilization - DB インスタンスの CPU 使用率
    • FreeableMemory - DB インスタンスの 使用可能メモリ
    • 拡張モニタリングを使用していれば OS の詳細情報を取得可能
  • CloudTrail のイベント履歴を確認する
    • 意図的にサーバ停止/再起動/フェイルオーバを実施していなかったか等

上位レイヤーの確認

  • 事象発生時間帯付近のログを確認する
    • 原因と思われるエラーメッセージなどがないかを確認する
    • エラーメッセージを特定した場合は、そのメッセージをもとに検索サイトより公開情報に対して検索を実施する

上記すべて確認したが原因不明の場合

次のいずれかが原因でフェイルオーバーが発生している可能性があります

  • アベイラビリティーゾーンの障害
  • プライマリ DB インスタンスのコンピューティングノードの障害
  • プライマリ DB インスタンスでのネットワークの問題
  • ストレージまたは Amazon Elastic Block Store (Amazon EBS) ボリュームの問題

参考情報