[アップデート] Amazon DocumentDB (with MongoDB compatibility) がクロスリージョンのスナップショットコピーに対応しました!
コンバンハ、千葉(幸)です。
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
以上、千葉(幸)がお送りしました。