专栏首页运维经验分享Mongo的备份和恢复(mongodump 和mongorestore )

Mongo的备份和恢复(mongodump 和mongorestore )

为什么80%的码农都做不了架构师?>>>

Mongo的备份和恢复(mongodump 和mongorestore )

--备份单个表
mongodump -u  superuser -p 123456  --port 27017 --authenticationDatabase admin -d myTest -c d -o /backup/mongodb/myTest_d_bak_201507021701.bak

--备份单个库
mongodump  -u  superuser -p 123456 --port 27017  --authenticationDatabase admin -d myTest -o  /backup/mongodb/

--备份所有库
mongodump  -u  superuser -p 123456 --authenticationDatabase admin  --port 27017 -o /root/bak 

--备份所有库推荐使用添加--oplog参数的命令,这样的备份是基于某一时间点的快照,只能用于备份全部库时才可用,单库和单表不适用:
mongodump -h 127.0.0.1 --port 27017   --oplog -o  /root/bak 

--同时,恢复时也要加上--oplogReplay参数,具体命令如下(下面是恢复单库的命令):
mongorestore  -d swrd --oplogReplay  /home/mongo/swrdbak/swrd/

--恢复单个库:
mongorestore  -u  superuser -p 123456 --port 27017  --authenticationDatabase admin -d myTest   /backup/mongodb/

--恢复所有库:
mongorestore   -u  superuser -p 123456 --port 27017  --authenticationDatabase admin  /root/bak

--恢复单表
mongorestore -u  superuser -p 123456  --authenticationDatabase admin -d myTest -c d /backup/mongodb/myTest_d_bak_201507021701.bak/myTest/d.bson

注:

1、mongorestore恢复数据默认是追加,如打算先删除后导入,可以加上--drop参数,不过添加--drop参数后,会将数据库数据清空后再导入,如果数据库备份后又新加入了数据,也会将新加的数据删除,它不像mysql有一个存在的判断。

2、mongodump在mongo关闭时,也是可以备份的,不过需要指定数据目录,命令为:

mongodump  --dbpath  /data/db

3、在备节点使用mongodump备份时,必须加上--oplog参数,否则备份的状态不会和任何其他集群成员的状态相吻合,另外在恢复时还需创建一份oplog,用来恢复备份期间所做的操作。

恢复:
1、将复制集中要恢复的节点移除
rs.remove("10.10.17.26:27000")
2、运行mongorestore --oplogReplay命令
mongorestore --host 10.10.17.26 --port  27000 --oplogReplay  /data/mongodbbackup/20150820/
3、创建oplog
use local 
db.createCollection("oplog.rs", {"capped" : true, "size" : 10000000})
4、恢复oplog
mongorestore --host 10.10.17.26 --port  27000 -d local -c oplog.rs  /data/mongodbbackup/20150820/oplog.bson
5、将该节点加入到复制集 
rs.add("10.10.17.26:27000")

4、mongodump与mongoexport的区别:

  • mongodump导出的是bson格式,是二进制形式,不过可以使用mongo自带的bsondump命令查看里面的数据,而mongoexport导出的则是文本,可以是csv、json格式。
  • JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
  • 在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
  • JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。

分类: Mongo Backup and Recovery

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ABAP,Java和JavaScript的序列化,反序列化

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • npm scripts的生命周期管理

    我们平时阅读一些开源项目,可能会发现有些项目的package.json里的scripts区域定义的脚本很复杂,令人眼花缭乱。

    Jerry Wang
  • 分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表

    这可能是史上最简单易用的开源统计图表绘制库了。柱状图,饼状图,点状图等等您能想到的类型全部支持。

    Jerry Wang
  • CloudFoundry用命令cf login登录失败产生的日志输出

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 将Chrome调试器里的JavaScript变量保存成本地JSON文件

    我写了一个系列的文章,主要用来搜集一些供程序员使用的小工具,小技巧,帮助大家提高工作效率。

    Jerry Wang
  • 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串

    Jerry Wang
  • 如何用Chrome自带的截屏功能截取超过一个屏幕的网页

    前端开发人员经常需要将当前的网页截图发给产品经理讨论。如果网页很长,一个屏幕显示不下,那么操作系统自带的截图功能就没有办法截取整个屏幕了。

    Jerry Wang
  • 微信小程序开发系列四:微信小程序之控制器的初始化逻辑

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 如何确保SAP OData服务的返回结构为JSON格式

    大家可能会发现默认情况下,我们调用SAP OData得到的返回结构是XML格式的,如果用JavaScript解析,不如JSON格式方便:

    Jerry Wang
  • CloudFoundry命令行和Kubernetes命令行的Restful API消费方式

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券