MongoDB数据备份与恢复
连接端口:mongos的端口
备份指定的库
[root@linux ~]# mongodump --port 27017 -d db1 -o /tmp/mongobak
#将db1库备份到/tmp/mongobak目录下
备份目录下会自动生成以库名命名的目录
[root@linux ~]# ls /tmp/mongobak/db1/
cl01.bson cl01.metadata.json
#每个集合会生成2个文件,数据存放在.bson文件中,该文件为二进制文件,不能直接查看
备份指定集合
[root@linux ~]# mongodump --port 27017 -d db1 -c cl01 -o /tmp/mongobak
#依然会在备份目录下生成以库名命名的目录,将备份出的集合存放到该目录中
备份所有库
[root@linux ~]# mongodump --port 27017 -o /tmp/mongobak
导出集合为json文件
[root@linux ~]# mongoexport --port 27017 -d db1 -c cl01 -o /tmp/cl01.json
查看json文件
[root@linux ~]# head -5 /tmp/cl01.json
{"_id":{"$oid":"5dfb6786a2dbe0c90a06c844"},"id":1.0,"test":"testval"}
{"_id":{"$oid":"5dfb6786a2dbe0c90a06c845"},"id":2.0,"test":"testval"}
{"_id":{"$oid":"5dfb6786a2dbe0c90a06c846"},"id":3.0,"test":"testval"}
{"_id":{"$oid":"5dfb6786a2dbe0c90a06c847"},"id":4.0,"test":"testval"}
{"_id":{"$oid":"5dfb6786a2dbe0c90a06c848"},"id":5.0,"test":"testval"}
恢复所有库
[root@linux ~]# mongorestore --port 27017 --drop /tmp/mongobak/
恢复指定的库
[root@linux ~]# mongorestore --port 27017 -d db1 /tmp/mongobak/db1/
恢复指定的集合
[root@linux ~]# mongorestore --port 27017 -d db1 -c cl01 /tmp/mongobak/db1/cl01.bson 将json文件的数据导入集合
[root@linux ~]# mongoimport --port 27017 -d db1 -c cl01 --file /tmp/cl01.json
注意:恢复数据库时,数据库必须先存在,否则报错。