MongoDB基础之八 备份与恢复

Mongodb导出与导入

1: 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的.
所以,都有如下通用选项:
-h host 主机
--port port 端口
-u username 用户名
-p passwd 密码

2: mongoexport 导出json格式的文件
问: 导出哪个库,哪张表,哪几列,哪几行?

-d 库名
-c 表名
-f field1,field2...列名
-q 查询条件
-o 导出的文件名
-- csv 导出csv格式(便于和传统数据库交换数据)

 例1:导出 stu表 sn小于1000的 sn 和 name 注: _id列总是导出

 1 # ./bin/mongoexport -u testUser -p 1234 -d test -c stu -f sn,name -q '{sn:{$lte:1000}}' -o ./test.stu.json
 2 connected to: 127.0.0.1
 3 exported 1000 records
 4 [root@localhost mongodb]# ll
 5 总用量 156
 6 drwxr-xr-x 2 root root 4096 5月 23 10:43 bin
 7 -rw------- 1 hadoop hadoop 34520 8月 4 2013 GNU-AGPL-3.0
 8 -rw------- 1 hadoop hadoop 1359 8月 4 2013 README
 9 -rw-r--r-- 1 root root 86786 5月 25 10:12 test.stu.json
10 -rw------- 1 hadoop hadoop 18436 8月 4 2013 THIRD-PARTY-NOTICES

 例2:导出stu表 csv的格式

1 ./bin/mongoexport -u testUser -p 1234  -d test -c  stu -f sn,name -q '{sn:{$lte:10}}' -o ./test.stu.csv

 查看 导出的 csv文件 

 1 # more test.stu.csv
 2 sn,name
 3 1.0,"student1"
 4 2.0,"student2"
 5 3.0,"student3"
 6 4.0,"student4"
 7 5.0,"student5"
 8 6.0,"student6"
 9 7.0,"student7"
10 8.0,"student8"
11 9.0,"student9"
12 10.0,"student10"

 3.Mongoimport 导入

-d 待导入的数据库
-c 待导入的表(不存在会自己创建)
--type csv/json(默认)
--file 备份文件路径

例1: 导入json

1 # ./bin/mongoimport -u testUser -p 1234 -d test -c animal --type json --file ./test.stu.json

例2: 导入csv 注: --headerline 跳过列名

1 /bin/mongoimport -u testUser -p 1234 -d test -c bird -f sn,name --type csv --headline  --file ./test.stu.csv

4.Mongodump 导出二进制bson结构的数据及其索引信息


-d 库名
-c 表名
-f field1,field2...列名

mongodum -d test [-c 表名] 默认是导出到mongo下的dump目录

规律:
1:导出的文件放在以database命名的目录下
2: 每个表导出2个文件,分别是bson结构的数据文件, json的索引信息
3: 如果不声明表名, 导出所有的表

mongorestore 导入二进制文件
例:
./bin/mongorestore -d test --directoryperdb dump/test/ (mongodump时的备份目录)

二进制备份,不仅可以备份数据,还可以备份索引,
备份数据比较小.

 例:单表的备份和恢复

  1.dump tea 表

1 ./bin/mongodump -u testUser -p 1234 -d test -c tea

 2.查看 dump文件

1 # ll dump/test
2 总用量 8
3 -rw-r--r-- 1 root root 151 5月  25 10:37 tea.bson
4 -rw-r--r-- 1 root root 179 5月  25 10:37 tea.metadata.json

 3.删除 tea 表

 1 > db.tea.drop();
 2 true
 3 > show tables
 4 animal
 5 bird
 6 shop
 7 stu
 8 system.indexes
 9 system.users
10 >

 4.还原 tea 表 并查看记录 还原成功

1 ./bin/mongorestore -u testUser -p 1234 -d test --collection tea   dump/test/tea.bson
2 
3 > db.tea.find()
4 { "_id" : ObjectId("5743d98aaddef29711337fb4"), "email" : "a@163.com" }
5 { "_id" : ObjectId("5743d98daddef29711337fb5"), "email" : "b@163.com" }
6 { "_id" : ObjectId("5743d9cfaddef29711337fb7"), "email" : "c@163.com" }
7 { "_id" : ObjectId("5743dc98addef29711337fbc") }
原文地址:https://www.cnblogs.com/chinesern/p/5526427.html