• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mongodb增量备份脚本的实现和原理详解

    前言

    mongodb的副本集架构,主库和从库的数据相同步,如果主库的机器坏掉,没什么关系,从库上还有相同的副本数据。但如果某人恶意操作或误操作,一下子批量删除或drop整个库,这样主库和从库的数据都会没有,造成巨大损失。因此,对mongodb数据库定期备份是非常重要的。备份如果每次都全量备份,会消耗大量时间,并且对 mongodb性能也有影响,从而需要能增量备份。mongodb的增量备份网上没有现成的工具,故仔细研究了下写了个脚本。

    mongodb集群架构时,从库是通过异步复制主库的Oplog文件,从而达到与主库的同步。

    Oplog 记录了MongoDB数据库的更改操作信息,其保存在local库的oplog.rs表,在集群架构才存在,单机不会有,故增量备份不能在单机下使用。 oplog有大小限制,超过指定大小,新的记录会覆盖旧的操作记录。

    mongodb增量备份原理

    如何将某段时间的oplog下载下来,我拼接好的例子:

    mongodump -h 127.0.0.1 --port 27117 -d local -c oplog.rs -u admin -p xxx --authenticationDatabase admin -q '{ts:{$gt:{$timestamp:{t:1451355000,i:1}},$lt:{$timestamp:{t:1451357430,i:1}}},ns:/^test_db\\./}' -o oplog_backup

    上述是导出1451355000-1451357430时间之间的oplog,导出oplog需要切换到admin权限账户。

    原理很简单,但具体实现还是需要很多考虑,具体看代码。脚本在一个周期内(如一星期)先备份一次全量数据库,后面每次进行增量备份。脚本地址:http://git.oschina.net/passer/mongodb_backup_script

    增量脚本执行时的流程

    1. 读取上一个周期执行信息判断是否需要创建新的周期
    2. 获得mongodb上oplog最近记录的时间点current timestamp position
    3. 从本地读取上一次执行时mongodb的oplog时间点
    4. dump导出全量数据或增量oplog文件到本地,增量oplog文件的导出范围是 上次oplog记录点到最新时间内的oplog文件
    5. 保存步骤2获取的current timestamp position到本地,作为下一次执行步骤3中的时间点
    6. 进行压缩
    7. 上传到oss
    8. 删除本地备份文件

    全量脚本执行时的流程

    恢复时脚本执行的流程

    1. 从oss上下载指定周期的备份文件到本地
    2. 对全量文件和增量oplog的zip文件进行解压
    3. 用 mongorestore对全量文件进行导入
    4. 用 mongorestore --oplogReplay 分别对各时间段的oplog文件进行导入

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • mongodb增量/全量备份脚本的实现详解
    • mongodb 数据库操作--备份 还原 导出 导入
    • MongoDB整库备份与还原以及单个collection备份、恢复方法
    • MongoDB备份、还原、导出、导入、克隆操作示例
    • Windows下自动备份MongoDB的批处理脚本
    • Mongodb实现定时备份与恢复的方法教程
    • Windows或Linux系统中备份和恢复MongoDB数据的教程
    • Linux下MongoDB数据库实现自动备份详解
    • 浅谈MongoDB的备份方式
    • MongoDB使用自带的命令行工具进行备份和恢复的教程
    上一篇:mongodb增量/全量备份脚本的实现详解
    下一篇:mongodb如何对文档内数组进行过滤的方法步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mongodb增量备份脚本的实现和原理详解 mongodb,增量,备份,脚本,的,