MongoDB Atlas の Cloud Provider Snapshots を使ってみた

MongoDBのマネージドサービスであるMongoDB Atlasのバックアップメニューに、Cloud Provider Snapshotsが追加されていたので試してみました。
2018.06.23

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

こんにちは、菊池です。

MongoDB のマネージドサービスである、MongoDB Atlas に Cloud Provider Snapshots というバックアップメニューが追加されていることに気がつきました。

MongoDB Atlas のバックアップ機能

MongoDB Atlas では、以下の2つのバックアップ機能が提供されています。

  • Continuous Backups
  • Cloud Provider Snapshots

Continuous Backups は MongoDB ネイティブのバックアップ機能で、オンプレミス版の OpsManager や CloudManager を使ったバックアップ同様、Oplog(MongoDBにおけるトランザクションログ)を利用した増分バックアップです。

一方で、Cloud Provider Snapshots は、ホストするクラウドサービスの機能を使ったスナップショットです。AWS であれば、EBSのスナップショットを使っていると思われます。

それぞれのバックアップ方式の特徴です。

Continuous Backups Cloud Provider Snapshots
ポイントインタイムリカバリ ×
シャードクラスタのサポート ×
スナップショット間隔 設定可能 24時間(1日1回)
スナップショット保存期間 最大3年 3日(3世代)
利用料金(月額) $1.50 - $2.50/GB $0.14/GB

MongoDB ネイティブの機能を使う Continuous Backups と比較し、Cloud Provider Snapshots はかなり機能が制限されます。しかし、その分、GBあたりの利用料は1/10以下となっており、手軽に利用できる印象です。

Cloud Provider Snapshots を使ってみる

それでは、Cloud Provider Snapshots を試してみたいと思います。

まずはクラスタを作成します。AWSの東京リージョン(ap-northeast-1)を利用します。

バックアップの設定を有効化し、Cloud Provider Snapshots を選択します。バックアップ方式はプロジェクト単位での設定になることにご注意ください。

クラスタが作成できました。起動が完了するのを待ちます。

起動したら、クラスタの詳細を確認します。

[Backup]のタブを選択します。すると、起動直後に最初のスナップショットが作成されています。以降は、24時間ごとにスナップショットが作成されていくことになります。

2日経過したところで、3つのスナップショットが作成されていました。

スナップショットの利用方法は2つあります。

  • クラスタにリストア
  • アーカイブをダウンロード

今回はダウンロードしてみました。スナップショットを選択して[Download]のボタンを押すと、以下のようにポップアップが出てきます。アクセスを許可するIPを確認して、ダウンロードします。(このIPは、[Security]の項目から設定できます)

認証のためパスワードを入力すると、ダウンロードデータの作成が始まります。

しばらく待つと、[Restore History]に通知が現れました。

すると、ダウンロードリンクとURLが表示され、ダウンロードできます。このリンクは作成から4時間有効なようです。

restore-xxxxxxxxxxxxxxxxxxxxxxx.tar.gzというアーカイブがダウンロードでき、解凍するとこんな感じで、MongoDBのデータファイルが取得できます。

$ ls Downloads/restore-xxxxxxxxxxxxxxxxxxxxxxx
WiredTiger				collection-21-3307756905989045374.wt	index-25-3307756905989045374.wt
WiredTiger.lock				collection-24-3307756905989045374.wt	index-26-3307756905989045374.wt
WiredTiger.turtle			collection-4-3307756905989045374.wt	index-3-3307756905989045374.wt
WiredTiger.wt				collection-6-3307756905989045374.wt	index-5-3307756905989045374.wt
WiredTigerLAS.wt			collection-8-3307756905989045374.wt	index-7-3307756905989045374.wt
_mdb_catalog.wt				diagnostic.data				index-9-3307756905989045374.wt
collection-0-3307756905989045374.wt	index-1-3307756905989045374.wt		journal
collection-10-3307756905989045374.wt	index-12-3307756905989045374.wt		mongod.lock
collection-11-3307756905989045374.wt	index-14-3307756905989045374.wt		mongodb.log
collection-13-3307756905989045374.wt	index-16-3307756905989045374.wt		sizeStorer.wt
collection-15-3307756905989045374.wt	index-18-3307756905989045374.wt		storage.bson
collection-17-3307756905989045374.wt	index-20-3307756905989045374.wt		watchdog_probe.txt
collection-19-3307756905989045374.wt	index-22-3307756905989045374.wt
collection-2-3307756905989045374.wt	index-23-3307756905989045374.wt

これを MongoDB のデータディレクトリに展開して起動すれば、リストアが可能です。

まとめ

MongoDB Atlas の Cloud Provider Snapshots を試してみました。

機能は限定的ですが、安価で手軽なバックアップ手段として使いやすそうです。また、スナップショットデータのダウンロードも簡単にできますので、Atlas 上で利用していた MongoDB のデータを、オンプレやクラウド上のセルフマネージ環境の MongoDB にリストアするのも容易です。