MongoDB数据备份恢复

左心房为你撑大大i 提交于 2020-01-17 13:52:13

备份恢复工具介绍
(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

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!