1.mongodump与mongorestore

例:将server0:27017/admin数据库下的user表,按注册时间大于等于1488297600000(unix时间戳)的查询条件,将匹配的数据备份到/tmp/mongodump/目录下,并将数据恢复到本机mongodb数据库里。

#备份
$ ./mongodump -h server0 --port 27017 -d admin -c user -q '{registerTime:{"$gte":1488297600000}}' -u test -p test -o /tmp/mongodump/

#/tmp/mongodump/目录下生成的文件默认以数据库名称命名文件夹,表名称命名.bson文件,同时生成.meta.json的索引文件。
$ ls /tmp/mongodump/admin/
user.bson  user.metadata.json

#恢复
$ ./mongorestore -h 127.0.0.1 --port 27017 -d admin -c user -u test -p test /tmp/mongodumo/admin/user.bson
connected to: 127.0.0.1:27017
2017-04-01T16:09:00.810+0800 	/tmp/mongodump/admin/user.bson
2017-04-01T16:09:00.810+0800 	going into namespace [admin.user]
Restoring to admin.user without dropping. Restored data will be inserted without raising errors; check your server log
68000 objects found
2017-04-01T16:09:00.877+0800 	Creating index: { key: { _id: 1 }, ns: "admin.user", name: "_id_" }
2017-04-01T16:09:01.101+0800 	Creating index: { key: { username: 1, registerTime: 1 }, ns: "admin.user", name: "username_1_registerTime_1" }

常用参数列表(1-1):

$ ./mongodump --help
-h [ --host ]      mongodb所在服务器
--port             mongodb所在服务器端口
-u [ --username ]  username
-p [ --password ]  password
-d [ --db ]        database实例
-c [ --collection ]collection实例
-o [ --out ]       备份文件输出文件夹路径
-q [ --query ]     查询条件

$ ./mongorestore --help
--drop             恢复的时候,先删除当前数据,然后恢复备份的数据
-h [ --host ]      mongodb所在服务器
--port             mongodb所在服务器端口
-u [ --username ]  username
-p [ --password ]  password
-d [ --db ]        database实例
-c [ --collection ]collection实例


2.mongoexport与mongoimport

常用参数与mongodump、mongorestore一致(参见常用参数列表(1-1)),但多了一些参数,如下:

$ ./mongoexport --help
--csv              输出.csv文件代替.json文件

两种备份方法的区别

1.mongodump可以备份整个数据库,而mongoexport只能备份collection级别。

2.mongodump输出的是.bson文件,而mongoexport输出的是.json文件(或指定其它类型,如.csv),mongoexport的阅读性更好且易修改。