备份恢复工具介绍
(1)** mongoexport/mongoimport
(2)***** mongodump/mongorestore
应用场景总结:
mongoexport/mongoimport:json csv
1、异构平台迁移 mysql <---> mongodb
2、同平台,跨大版本:mongodb 2 ----> mongodb 3
mongodump/mongorestore
日常备份恢复时使用.
mongoexport具体用法如下所示:
$ mongoexport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导出那些列
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件
--authenticationDatabase admin
1.单表备份至json格式
例:备份itemtest库下的sec表
mongoexport -uroot -proot123 --port=27017 --authenticationDatabase admin -d itemtest -c sec -o /mongodb/log.json
注:备份文件的名字可以自定义,默认导出了JSON格式的数据。
2. 单表备份至csv格式
如果我们需要导出CSV格式的数据,则需要使用----type=csv参数:
mongoexport -uroot -proot123 --port=27017 --authenticationDatabase admin -d itemtest -c sec --type=csv -f uuid,name,age -o /mongodb/log.csv
导入工具mongoimport
$ mongoimport --help
参数说明:
- -h:指明数据库宿主机的IP
- -u:指明数据库的用户名
- -p:指明数据库的密码
- -d:指明数据库的名字
- -c:指明collection的名字
- -f:指明要导入那些列
- -j, 或 --numInsertionWorkers=<number> number of insert operations to run concurrently (defaults to 1) //并发导入
- --drop 覆盖原来表中内容
数据恢复:
1.恢复json格式表数据到test库中的test表
mongoimport -uroot -proot123 --port=27017 --authenticationDatabase admin -d test -c test /mongodb/log.json
2.恢复csv格式的文件到test1
上面演示的是导入JSON格式的文件中的内容,如果要导入CSV格式文件中的内容,则需要通过--type参数指定导入格式,具体如下所示:
注意:
(1)csv格式的文件头行,有列名字
mongoimport -uroot -proot123 --port=27017 --authenticationDatabase admin --type=csv -d test -c test1 --headerline /mongodb/log.csv
--headerline:指明第一行是列名,不需要导入。
(2)csv格式的文件头行,没有列名字
mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -type=csv -d test -c test1 -f id,name,age,dtae /mongodb/log.csv
注:如果导入的时候不想加-f只想用--headerline参数 可以vi编辑csv文件 把列名添加到第一行
异构平台迁移案例
mysql -----> mongodb
mysql表导入到mongodb
导出mysql的account表数据
select * from account_log into outfile "/tmp/account.csv" fields terminated by ',';
fields terminated by ',' #设置分隔符为','(逗号) mysql导出的csv文件默认分隔符为空格
处理备份csv文件
查看account表列字段内容
desc account_log;
编辑csv文件,把列名添加到第一行
vim account.csv
在mongodb中导入备份
mongoimport -uroot -proot123 --port=27017 --authenticationDatabase admin --type=csv -d test -c test5 --headerline /root/account.csv
mongodump和mongorestore
mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档写入磁盘。
但是存在的问题时使用mongodump产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,
则备份出来的文件可能不完全和Mongodb实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。
mongodump用法如下
参数说明:
- -h:指明数据库宿主机的IP
- -u:指明数据库的用户名
- -p:指明数据库的密码
- -d:指明数据库的名字
- -c:指明collection的名字
- -o:指明到要导出的文件名
- -q:指明导出数据的过滤条件
- -j, 使用cpu数量
- --oplog 备份的同时备份oplog
- --gzip 备份时压缩备份,回复时解压
全库备份
mongodump -uroot -proot123 --port=27017 --authenticationDatabase admin -j 2 -o /mongodb/backup/
注:备份出来的库中的表文件氛围json和bson格式,json内记录的是表中的列信息,bson记录的是源数据。bson是二进制文件可以用西面命令查看或导出成json格式文件
bsondump abc.bson
指定库备份
mongodump -uroot -proot123 --port=27017 --authenticationDatabase admin -d itemtest -o /mongodb/backup/
单表备份
mongodump -uroot -proot123 --port=27017 --authenticationDatabase admin -d test -c test1 -o /mongodb/backup/
压缩备份
mongodump -uroot -proot123 --port=27017 --authenticationDatabase admin -o /mongodb/backup/ --gzip
恢复备份
全库恢复
mongorestore -uroot -proot123 --port=27017 --authenticationDatabase admin /mongodb/backup/ --gzip
恢复指定库
mongorestore -uroot -proot123 --port=27017 --authenticationDatabase admin -d itemtest /mongodb/backup/itemtest/ --gzip
恢复指定表
mongorestore -uroot -proot123 --port=27017 --authenticationDatabase admin -d itemtest -c sec /mongodb/backup/itemtest/sec.bson.gz --gzip
来源:CSDN
作者:bjgaocp
链接:https://blog.csdn.net/bjgaocp/article/details/103988414