Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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/

shiromi
Rails / Elixir / SRE
access
SDNからセンサ、家電、電子書籍まで。ACCESSはあらゆるレイヤのデバイス、サービスを「繋げて」いきます。
http://jp.access-company.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away