MongoDBでデータをバックアップ/リストアする

  • 75
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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/

  • この記事は以下の記事からリンクされています
  • mongoDBのあれこれからリンク