[アップデート] Amazon DocumentDB (with MongoDB compatibility) がクロスリージョンのスナップショットコピーに対応しました!

DocumentDB がクロスリージョンスナップショットコピーに対応しました。 RDS でできることは大抵できるようになる気がしますね。

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

コンバンハ、千葉(幸)です。

Amazon DocumentDB (with MongoDB compatibility) のスナップショットを、リージョンを跨いでコピーすることが可能になりました!

可用性を満たす構成を取りやすくなりましたね!

目次

Amazon DocumentDB (MongoDB 互換) とは

Amazon DocumentDB (MongoDB 互換) は、高速で信頼性が高いフルマネージドデータベースサービスです。ドキュメント志向データベースにおいてメジャーな製品である MongoDB と互換を持つデータベースをマネージドで提供してくれます。

詳細については、以下のエントリをご確認ください。

DocumentDB では Amazon RDS と同じようにDB領域をスナップショットとしてバックアップできるのですが、そのスナップショットを別リージョンにコピーできるようになりました。

なお、以下の制約があるので注意してください。

  • ターゲットスナップショットが使用可能になる前にソーススナップショットを削除すると、スナップショットのコピーが失敗する場合があります
  • アカウントごとに、1つの宛先リージョンに対して最大5つのスナップショットコピーリクエストを処理できます
  • リージョンとコピーされるデータの量によっては、クロスリージョンスナップショットコピーが完了するまでに数時間かかる場合があります

Copying Amazon DocumentDB Cluster Snapshots - Amazon DocumentDB

やってみた

どのような操作感なのか確認してみましょう。シンプルにクラスターを作成し、スナップショットを取得、それを別リージョンにコピーする、というところまでやってみます。

DocumentDB クラスターの作成

Amazon DocumentDB -> クラスター より、 [ 作成 ] を押下します。

クラスター識別子インスタンスクラスインスタンス数認証情報といった基本的な情報を入力します。

なお、先日のアップデートで db.t3.medium が選択できるようになりました。

また、マスターユーザー名として admin を入力すると作成時にエラーとなるのでご注意ください。

MasterUsername admin cannot be used as it is a reserved word used by the engine

[ 詳細設定の表示 ] を有効化すると、追加の設定項目が表示されます。

まずはネットワークまわり使用ポートパラメータグループを指定します。ちなみにここでのサブネットグループは、 RDS 用に作成したものがあればそれを使用することができます。

全体的に作成時の指定項目が RDS と似てますね。

パラメータグループは RDS とは別物で、 DocumentDB 独自のものです。設定項目は少なめで、現時点で以下のような項目が確認できました。

クラスターのパラメータ名 使用できる値 変更可能 適用タイプ データ型 説明
profiler_sampling_rate 1 0.0-1.0 TRUE dynamic float Sampling rate for logged operations
profiler_threshold_ms 100 50-2147483646 TRUE dynamic integer Operations longer than profiler_threshold_ms will be logged
profiler disabled enabled,disabled TRUE dynamic string Enables profiling for slow operations
audit_logs disabled enabled,disabled TRUE dynamic string Enables auditing on cluster.
ttl_monitor enabled disabled,enabled TRUE dynamic string Enables TTL Monitoring
change_stream_log_retention_duration 10800 3600-86400 TRUE dynamic integer Duration of time in seconds that the change stream log is retained and can be consumed.
tls enabled disabled,enabled TRUE static string Config to enable/disable TLS

パラメータグループを明示的に指定しない場合、デフォルトのパラメータグループが作成され、適用されます。

続いて、暗号化バックアップログのエクスポートに関する設定をします。

今回はデフォルトの CMK を使用して暗号化してみます。エイリアスが aws/rds となっているのが興味深いですね。

メンテナンスタグ削除保護の設定をし、 [ クラスターの作成 ] を押下します。

クラスターおよびインスタンスの作成が開始されますが、今回の構成ではクラスター自体は比較的短時間で available のステータスとなります。

スナップショットの作成およびリージョン間コピー

作成したクラスターを選択し、 [ アクション ] -> [ スナップショットの取得 ] を押下します。

スナップショット識別子を入力し、 [ 作成 ] を押下します。

しばらくするとスナップショットのステータスが available となるため、 [ アクション ] -> [ コピー ] を押下します。

コピー先のリージョンコピー先のスナップショット識別子暗号化オプションを指定します。コピー元のスナップショットが暗号化されていた場合、ここで無効化することはできません。(他のキーを使用した暗号化を行うことはできます。)

コピー先のリージョンでデフォルトでない CMK を使用して暗号化したい場合、予め CMK を作成しておく必要があることに注意してください。

[ スナップショットのコピー ] を押下します。

コピー先のリージョンでスナップショットを確認すると、ステータスがcopying となっています。

しばらくすると、ステータスが available となります。今回のケースでは、クラスターに対して何も変更を変更を加えていないこともあり、数分でコピーが完了しました。

簡単にクロスリージョンのコピーができました!

終わりに

DocumentDB がスナップショットのクロスリージョンコピーに対応したことを確認しました。

高いレベルの可用性が求められる構成においては、リージョン単位の障害を想定してスナップショットだけを別リージョンに退避しておき、障害時には別リージョンでスナップショットよりリストアする、という方式をとることがあるかと思います。そういった構成にマッチするようになったアップデートですね。

データ量によってはコピーに大きく時間がかかることがあるようなので、実際に測定してみることをおすすめします。

また、何かと RDS と似ているなーと思う箇所が多い DocumentDB ですが、アクションやリソースは rds: で表されることを知りました。知見です。

Amazon DocumentDB API のアクセス権限: アクション、リソース、条件リファレンス - Amazon DocumentDB

以上、千葉(幸)がお送りしました。