[アップデート] RDS for Oracleでクロスリージョン自動バックアップがサポートされました #reinvent

2020.12.10

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

しばたです。

re:Invent 2020中のアップデートで災害対策用にRDS for Oracleの自動バックアップを他リージョンにレプリケーションできる新機能が発表されました。

公式のアナウンスはこちらになります。

RDS for Oracleのクロスリージョン自動バックアップ

これまでRDS for Oracleにおける災害対策としてはOracle Active Data GuardまたはOracle Data Guardを使用したクロスリージョンレプリケーションが利用可能でしたが、これらの機能は最低でもEnterprise Editionである必要があるため導入は容易ではありませんでした。

今回提供される「クロスリージョン自動バックアップ」は、RDS独自の仕組みでRDSの自動バックアップとトランザクションログ *1を別リージョンにレプリケーションし災害対策のバックアップとして使用します。

災害発生時はバックアップがレプリケートされたリージョンでRDSのリストア処理を行うことでシステムを復旧させます。

利用可能なバージョンおよびエディション

この機能はRDSの仕組みをベースとしているためRDS for Oracleのどのエディションでも利用可能です。
利用可能なバージョンは Oracle 12.1 (12.1.0.2.v10) 以降とされています。

また、暗号化されたデータベースはサポートされていないとのことです。

対象リージョン

現時点では利用可能なリージョンの組み合わせが以下の様に決まっています。

  • バージニア北部 (us-east-1) ←→ オレゴン (us-west-2)
  • フランクフルト (eu-central-1) ←→ アイルランド (eu-west-1)
  • 東京 (ap-northeast-1) → 大阪ローカルリージョン (ap-northeast-3)
    • 東京大阪間だけは片方向のみ

現時点で大阪ローカルリージョンが対象に含まれているのが面白いですね。
(さすがに私だと試せませんが...大阪がフルリージョンに昇格したら改めて試してみたいです)

費用

掛かる費用はバックアップのデータ量に応じたストレージ費用と、レプリケーションのデータ転送料金のみとなります。
詳細は以下のページを参照してください。

やってみた

今回は最初に示した図にある通り、バージニア北部(us-east-1)からオレゴン (us-west-2) へのレプリケーションを試してみます。

前提条件

VPC等のネットワーク周りのリソースについては作成済みとします。
今回は最新のOracle 19c SE2(19.0.0.0.ru-2020-10.rur-2020-10.r1)で試していきます。

RDSの作成

はじめにバージニア北部(us-east-1)でRDSを作成します。

通常のRDSの作成と基本的な手順は変わりません。
事前に必要な

  • サブネットグループ
  • パラメーターグループ (すべてデフォルト値のまま変更なし)
  • オプショングループ (追加オプションは無し)

は作成済みです。

マネジメントコンソールからRDSの作成を開始し、対象RDBMSはOracle Standard Editon Two (SE2)、バージョンはOracle 19.0.0.0.ru-2020-10.rur-2020-10.r1とします。

データベースの基本的な設定は適当に、

設定を進めていくと「Backup replication」の欄が新しく増えています。

ここで「Enable replication in another AWS Region」にチェックを付けるとレプリケーション先のリージョンとレプリケーション側の保持期間を選ぶことができます。
今回レプリケーション先に選べるのはオレゴン(us-west-2)だけですのでそのまま選択します。
レプリケーションの保持期間はデフォルトの7日間のままとしました。

その他のパラメーターは環境に応じて設定してください。
(本記事では内容を割愛します)

あとはこのままRDSを作成すれば完了です。
作成されたRDSの詳細情報を確認すると、「メンテナンスとバックアップ」タブの「バックアップ」欄にレプリケーションの状態が表示されます。

ここでリージョンを変えてオレゴンの情報を見ると「Automated backups」欄の「Replicated backups」にレプリケーションされた自動バックアップが表示されます。

詳細情報はこんな感じです。

バックアップのレプリケーション状態について

レプリケーションされたバックアップの詳細情報を見ると「ステータス」がreplicatingとなっており、トランザクションログが随時レプリケーションされる状態となります。

しばらく待つと「最も遅い復元可能な時刻」が更新され、レプリケーション随時なされていることがわかります。

ここでRDSはトランザクションログを5分ごとに取得する様に設定されている(RDS for OracleではARCHIVE_LAG_TARGET初期化パラメーターが5分に設定され5分ごとにログローテーションが発生する様になっている)ため、復旧可能な時刻はだいたい5分ずつ進んでいました。

レプリケーション間隔が具体的にどの程度かは示されておらず、目標復旧時点(RPO)に関する指標も今のところ無い様です。
この辺りは今後情報が増えて行くことを期待したいですね。

リストアしてみた

せっかくなのでこのバックアップをリストアしてみます。

今回はデータベースに以下の様に3行だけテストデータを入れておきました。

データ投入後しばらく待って復元可能時刻が更新されたのを確認してからリストアします。

前提条件

リストアに際しオレゴン(us-west-2)リージョンでは以下のリソースは事前に準備済みです。

  • VPCをはじめとしたネットワーク環境
  • サブネットグループ
  • パラメーターグループ

RDSのリストア

レプリケーションされたバックアップを選択し「特定時刻への復元」を選択します。

以降は一般的なRDSのリストアと同様です。
今回は「復元可能な最新時刻」にリストアします。
主なパラメーターは以下の様に設定しました。

  • インスタンス識別子 : test-db-restoreと別名を指定
  • パラメーターグループ : 予め作成しておいたものを指定
    • パラメーターグループの同期は別途考慮が必要そうです
  • VPC、サブネットグループ : 環境に応じて。サブネットグループは要事前作成
  • オプショングループ : バックアップで使用されているものを選択
  • その他パラメーター : 環境に応じて

「特定時点への復元」をクリックすればリストアを開始します。

しばらく待ってRDSインスタンスが利用可能になればリストア完了です。

リストアしたデータベースに接続しデータを確認すると下図の様にちゃんと復旧できています。

最後に

以上となります。

今回提供されたクロスリージョン自動バックアップはエディションを問わず利用できるため導入の敷居が非常に低く嬉しいアップデートです。

RDS for Oracleを使っているもののエディションや費用面の問題から災害対策の導入に二の足を踏んでいた方も多いのではないかと思います。
そういった方にぜひ試して頂きたいと思います。

脚注

  1. ドキュメントではこの様に表現されているが、実体としてはアーカイブログと予想される