Point-in-Timeパターン(一時的にmongodを停止する)でバックアップを取る方法。
あるサーバから別のサーバにMongoDBのデータを移動させるときに調べた。
MongoDB version: 2.4系
mongodumpでバックアップする
mongod.conf
のパスを調べる
--config か -f オプションで渡しているのがmongod.conf
CentOS 6.x
$ ps aux | grep mongod
... /usr/bin/mongod -f /etc/mongod.conf
Mac OS X
$ ps aux | grep mongod
... /usr/local/opt/mongodb/bin/mongod --config /usr/local/etc/mongod.conf
MongoDBのdbpath
(データベースの実体が置いてあるパス)を調べる
CentOS 6.x
$ grep dbpath [mongod.conf path]
dbpath=/var/lib/mongo
Mac OS X
$ grep dbpath [mongod.conf path]
dbpath = /usr/local/var/mongodb
mongodを停止する
$ mongo
> use admin
> db.shutdownServer()
> quit()
バックアップしたデータの格納用に、空ディレクトリを作る
$ mkdir ~/mongo_dump
データをバックアップする
# mongodump -v --dbpath /var/lib/mongo --out ~/mongo_dump
-v
verboseオプション
--dbpath
mongod.confで調べたdbpathを指定
--out
バックアップ先のディレクトリを指定
dbpathから読み出すので、root権限とか必要。
mongorestoreでリストアする
先にmongodのサービス起動しておく
CentOS 6.x
# service mongod start
Mac OS X
# launchctl start homebrew.mxcl.mongodb
データをリストアする
# mongorestore -v --db [database_name] ~/mongo_dump/[database_name]
-v
verboseオプション
--db
リストア先のデータベースを指定
バックアップデータのディレクトリ/データベースを指定
dbpathに書き込むので、root権限とか必要。
リストア時にはindexの構築も行われるので、バックアップより時間がかかった。
参考にしたページ
http://docs.mongodb.org/manual/core/backups/
http://docs.mongodb.org/manual/reference/program/mongodump/
http://docs.mongodb.org/manual/reference/program/mongorestore/