この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
ユースケースOrトラブルシューティング
アプリケーションのデータベースを別のAWSリージョンで機能させるために、手動作業は結構時間が掛かります。アーキテクトは、復元されたデータベースにデータトランザクションが欠落したりする現象が見つかりました。クロスリージョンフェイルオーバーシナリオで改善されたRTOとRPOを提供するソリューションがほしいです。
ソリューション
大体の手順について:
-
Amazon SNSトピックを作成して、Amazon RDSイベント通知をサブスクライブします。
-
RDSのMDBでAmazon RDSイベント通知を有効にします。
-
次の操作を行うLambda関数を作成します。
-
プRDSのMDBのスナップショットの作成を開始します。
-
新しく作成したスナップショットをDRリージョンにコピーします。
-
障害が発生した場合は、コピーしたスナップショットをDRリージョンに復元します。
-
Amazon CloudWatchイベントを有効にして、RTO要件に基づいてスナップショットの初期作成をスケジュールします。
-
オプション:古いスナップショットを削除するための追加のLambda関数を作成します。
纏めてみると以下のような感じです。
Amazon SNSトピックを使用して、Amazon RDSの可用性とBKイベントから公開されたメッセージを受信します。AWS Lambdaを使用して、以下の3つの個別のLambda関数を作成して呼び出す。
-
Amazon RDSデータベースインスタンスのスナップショットを作成
-
クロスリージョンスナップショットコピーを作成、
-
別のリージョンでスナップショットからインスタンスを復元。
また、イベントトリガーについて、
-
RPOに一致する頻度でスケジュールされたAmazon Cloud Watch Eventsルールを使用して、Lambda関数をトリガーしてデータベースインスタンスのスナップショットを作成します。
-
BKイベントのSNSトピックが新しいメッセージを受信したときに、Lambda関数をトリガーしてクロスリージョンスナップショットコピーを作成します。
-
スナップショットからインスタンスを復元することについて、可用性SNSトピックに発行された新しいメッセージの送信をトリガーするようにLambda関数を設定します。