mongodb备份恢复
7.1 备份恢复工具介绍:
(1) mongoexport/mongoimport
(2) mongodump/mongorestore
7.2 备份工具区别在哪里?
7.2.1 格式区别
mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式
mongodump/mongorestore 导入/导出的是BSON格式
7.2.2 可读性区别
JSON可读性强但体积较大,BSON则二进制文件,体积小但对人类几乎没有可读性
7.2.3 版本迁移区别
在一些mongodb版本之间,BSON格式可能会随版本不同有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功
具体要看版本之间兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式是一个可选项
跨版本的mongodump/mongorestore不推荐,需要查看是否兼容
7.2.4 注意事项
JSON虽然有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时注意。
7.3 应用场景总结
mongoexport/mongoimport:json csv
1 异构平台迁移 mysql <—> mongodb
2 同平台 跨大版本: mongodb 2 --> mongodb 3
mongoexport/mongoimport
日常备份恢复使用
7.4 详细说明
7.4.1 导出工具mongoexport
mongodb中的mongoexport工具可以把一个collection导出成JSON或CSV格式的文件
可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
(1)版本差异较大
(2)异构平台数据迁移
mongoexport具体用法如下所示:
[mongodb@node1 ~]$ mongoexport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导出哪些列
-o:指明要导出的文件名
-q:指明导出数据的过滤条件
–authenticationDatabase admin
7.4.1.1 单表备份至json格式
mongoexport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldboy -c log -o /mongodb/log.json
注:备份文件的名字可以自定义,默认导出了JSON格式的数据
7.4.1.2 单表备份至CSV格式
如果我们需要csv格式的数据,则需要使用–type=csv参数
[mongodb@node1 ~]$ mongoexport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldboy -c log --type=csv -f uid,name,age,date -o /mongodb/log.csv
7.4.2 导入工具mongoimport
mongodb中的mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。
该工具可以导入JSON格式数据,也可以导入csv格式数据。具体使用如下:
[mongodb@node1 ~]$ mongoimport --help
参数:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d: 指明数据库的名字
-c:指明collection的名字
-f:指明要导入的列
-j: --numInsertionWorkers //并行
数据恢复:
7.4.2.1 恢复json格式数据到log1
[mongodb@node1 mongodb]$ mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldboy -c log1 /mongodb/log.json
7.4.2.2 恢复csv格式的文件到log2
上面演示的是导入json格式的文件中的内容,如果要导入csv格式文件中的内容,则需要–type参数指定导入格式,具体如下:
注意:
(1)csv格式的文件头行,有列名字
[mongodb@node1 mongodb]$ mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldboy -c log2 --type=csv --headerline --file /mongodb/log.csv
–headerline:指明第一行是列明,不需要导入
(2)csv格式的文件头行,没有列名字
[mongodb@node1 mongodb]$ mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldboy -c log3 --type=csv -f id,n