バックアップ

based on v14 (2011/05/04 追従) - オリジナル

MongoDBのデータベースをバックアップするにはいくつかの方法があります。  警告: データベースが稼働中、書き込みが起きているときに、mongodのファイル自体(デフォルトでは、/data/db/) をバックアップするのは安全ではありません。fsyncオプションについて、下記を参照してください。

Journaling (--journal) を有効にした場合のスナップショットバックアップ

journal サブディレクトリを含む、dbpath 全体の lvm/ebs スナップショットをとるのが安全です。各時点において、全てのファイルのスナップショットがとられている限り、データベースを fsync-lock する必要はありません。しかし、journal と データファイルが互いに矛盾していないという保証は無いため、例え --journal をつけて起動していたとしても、locking やスナップショットすること無しに、単にファイルをコピーしてしまうのは安全ではありません。

シャットダウン、バックアップ

単純に、データベースを停止して、データファイルをバックアップし、再開します。これは安全ですが、もちろんダウンタイムが必要です。

fsync 書き込みロックとバックアップ

MongoDB v1.3.1から、 書き込みのフラッシュと、データベースの書き込みロック、そしてバックアップという手段が fsync と lock コマンド でサポートされました。

このロックモードでは、すべての書き込みがブロックされます。 もしこれが問題になる場合、下記の方法を考えてください。

例えば,fsync+lockの後で、スナップショットを作成するためにLVM2を使い、そしてそのスナップショット上でバックアップを取ることができるでしょう。これは、サーバがスナップショットを取る間だけロックされることを意味します。バックアップ/スナップショットが終わった後でアンロックするのを忘れないでください。

エクスポート

mongodump ユーティリティは、データベースが稼働中でも、データベース全体をdumpします。dumpしたデータは必要に応じて後でリストアができます。

スレーブバックアップ

もう一つのバックアップのよいテクニックは、スレーブデータベースへのレプリケーションです。  このスレーブはマスタを継続的にポーリングするので、ほぼ最新の状態のmasterのコピーになります。

スレーブにバックアップするにはいくつかの方法があります。

  1. スレーブでfsyncし、書き込みロックし、バックアップ
  2. シャットダウン、バックアップ、リスタート
  3. スレーブからエキスポート

1と2の方法は、バックアップ終了後にレプリケーションを再開し、バックアップ中に更新されたマスタの情報を適用します。

スレーブを使った方法には、常にマスタのフェイルオーバとしてバックアップデータベースマシンに用意されている、というアドバンテージもあります。
また、スレーブを使った方法は、マスターのパフォーマンスに影響を与えずにフルバックアップが取れる方法を提供します。

コミュニティの成果


Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

IF YOU HAVE A QUESTION, POST IT TO THE USER GROUP.

These pages are fine for comments, but for questions, your best bet will always be the MongoDB User Group.

blog comments powered by Disqus