LoginSignup
106
100

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-05-02

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/

106
100
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
106
100