[アップデート] より低コストにDR対策できるかも!?DynamoDB がテーブルバックアップの別リージョンへのリストアをサポートしました!

リージョン間でテーブルバックアップをリストアできるようになりました!
2020.02.21

先日のアップデートで、DynamoDB のテーブルバックアップを他のリージョンにリストアできるようになりました!

何が嬉しいのか

従来、DynamoDB における DR および BCP 対策としてはグローバルテーブルを使うことで、マルチリージョン、マルチマスターのデータベースを構築することが可能でした。アクティブ/アクティブのような構成を希望される場合はグローバルテーブルで良いのですが、数時間のダウンタイムが許容でき、障害時のみ別リージョンを使えれば良い、というような要件においては少々贅沢な構成となっていました。(グローバルテーブルの場合、レプリカ数分の Write キャパシティユニット料金+データ転送料金が必要となります)

今回のアップデートによって、先述のような数時間のダウンタイムが許容される DR および BCP 要件においては、従来に比べて低コストに実現することが可能となりました。

対応リージョン

DynamoDB のバックアップおよびリストアがサポートされているすべてのリージョンで利用可能

やってみる

それでは、やってみましょう。

ポイントインタイムリカバリの有効化

今回はポイントインタイムリカバリ(PITR)を使って、検証します。PITR だけでなく、オンデマンドバックアップでも利用可能です。

まず、DynamoDB の管理コンソールを開きます。東京リージョンには、以下のようなアイテムが入ったテーブルが存在します。

[バックアップ] タブを開き、ポイントインタイムリカバリ(PITR)が無効になっている場合は [有効化] をクリックします。

確認画面が表示されますので、[有効化]をクリックします。

特定時点への復元(別リージョンへ)

[バックアップ] タブを開き、[特定時点への復元] をクリックします。

[新しいテーブル名] および [復元日時] を指定します。今回はバージニアリージョンにリストアしたいので、判りやすく Virginia-table としました。セカンダリインデックスが不要な場合は、[セカンダリインデックスなしで復元] を選択することで、より高速かつコストを押さえて復元することが出来ます。

復元するリージョンが選択できるようになっていますので、[クロスリージョン] を選択し、復元先のリージョンを指定します。また、暗号化タイプを変更することも出来るようになっています。今回はデフォルトキーのまま、復元したいと思います。CLI からリストアする場合は他にも「課金モード」や「プロビジョンドスループット」なども上書きすることができます。詳細は公式ガイドを参照ください。

内容を確認し、[テーブルの復元] をクリックし、復元します。

「数時間かかることがある」 とのメッセージがありましたが、今回のケースではデータ量が極少なこともあり、10 分弱で完了しました。バージニアリージョンに復元された Virginia-table を確認してみると

東京リージョンと同様の内容であることが確認できましたね。

簡単ではありますが、検証は以上です。

注意点

グローバルテーブルの場合、レプリカが分離されたり障害等によりレイテンシーが遅延する場合、正常なリージョンにリクエストがリダイレクトされますが、今回の方式で別リージョンを利用する場合は、当然ですがアプリケーション側で使用するリージョンの指定を変更する対応が必要となります。

さいごに

グローバルテーブルのようなリッチな構成を望まない要件において、低コストに DR や BCP 対策が実現できるようになりました!

現在、それほどリッチな要件を求めているわけでは無いにもかかわらず、グローバルテーブルをお使いになられている場合、バックアップ/リストア方式への見直しを検討されてみてはいかがでしょうか。

以上!大阪オフィスの丸毛(@marumo1981)でした!