RTOとRPOを確保為にRDSForOracleのクロスリージョンディザスタリカバリーのソリューション


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

ユースケースOrトラブルシューティング

アプリケーションのデータベースを別のAWSリージョンで機能させるために、手動作業は結構時間が掛かります。アーキテクトは、復元されたデータベースにデータトランザクションが欠落したりする現象が見つかりました。クロスリージョンフェイルオーバーシナリオで改善されたRTOとRPOを提供するソリューションがほしいです。

ソリューション

大体の手順について:

  1. Amazon SNSトピックを作成して、Amazon RDSイベント通知をサブスクライブします。

  2. RDSのMDBでAmazon RDSイベント通知を有効にします。

  3. 次の操作を行うLambda関数を作成します。

  4. プRDSのMDBのスナップショットの作成を開始します。

  5. 新しく作成したスナップショットをDRリージョンにコピーします。

  6. 障害が発生した場合は、コピーしたスナップショットをDRリージョンに復元します。

  7. Amazon CloudWatchイベントを有効にして、RTO要件に基づいてスナップショットの初期作成をスケジュールします。

  8. オプション:古いスナップショットを削除するための追加のLambda関数を作成します。

纏めてみると以下のような感じです。

Amazon SNSトピックを使用して、Amazon RDSの可用性とBKイベントから公開されたメッセージを受信します。AWS Lambdaを使用して、以下の3つの個別のLambda関数を作成して呼び出す。

  1. Amazon RDSデータベースインスタンスのスナップショットを作成

  2. クロスリージョンスナップショットコピーを作成、

  3. 別のリージョンでスナップショットからインスタンスを復元。

また、イベントトリガーについて、

  1. RPOに一致する頻度でスケジュールされたAmazon Cloud Watch Eventsルールを使用して、Lambda関数をトリガーしてデータベースインスタンスのスナップショットを作成します。

  2. BKイベントのSNSトピックが新しいメッセージを受信したときに、Lambda関数をトリガーしてクロスリージョンスナップショットコピーを作成します。

  3. スナップショットからインスタンスを復元することについて、可用性SNSトピックに発行された新しいメッセージの送信をトリガーするようにLambda関数を設定します。

参考資料

Cross-Region Automatic Disaster Recovery on Amazon RDS for Oracle Database Using DB Snapshots and AWS Lambda

Last modified: 2024-02-05

Author