使用MongoDB进行数据备份/恢复

使用Point-in-Time模式(暂时停止mongod)进行备份的方法。

在将MongoDB数据从一个服务器移动到另一个服务器时,我进行了一些调查。
MongoDB版本:2.4系列。

用mongodump进行备份

查找mongod.conf的路径。
mongod.conf路径可以通过–config或-f选项传递。

CentOS 六点零版本

$ ps aux | grep mongod
... /usr/bin/mongod -f /etc/mongod.conf

苹果操作系统X

$ ps aux | grep mongod
... /usr/local/opt/mongodb/bin/mongod --config /usr/local/etc/mongod.conf

找出MongoDB的dbpath(存放数据库实体的路径)。

CentOS 6.x可以说是CentOS的6.x版本。

$ grep dbpath [mongod.conf path]
dbpath=/var/lib/mongo

苹果操作系统 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

苹果操作系统X

# launchctl start homebrew.mxcl.mongodb 

恢复数据

# mongorestore -v --db [database_name] ~/mongo_dump/[database_name]

-v 详细模式选项
–db 指定恢复的目标数据库
指定备份数据的目录/数据库

由于需要写入到dbpath,所以需要root权限之类的权限。
在恢复过程中还会进行索引构建,所以比备份花费的时间更长。

参考网页

以下是MongoDB官方文档中关于备份和恢复的链接:
http://docs.mongodb.org/manual/core/backups/
http://docs.mongodb.org/manual/reference/program/mongodump/
http://docs.mongodb.org/manual/reference/program/mongorestore/