mongodb增量备份脚本的实现

MongoDB增量备份脚本的实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、榆社网络推广、小程序制作、榆社网络营销、榆社企业策划、榆社品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供榆社建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

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

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

mongodb增量备份脚本的实现

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. 删除本地备份文件

全量脚本执行时的流程

  • 备份mongodb数据库到本地

  • 进行压缩

  • 上传到oss

  • 检验oss与本地文件的大小是否相同

  • 删除本地备份文件

恢复时脚本执行的流程

  1. 从oss上下载指定周期的备份文件到本地

  2. 对全量文件和增量oplog的zip文件进行解压

  3. 用 mongorestore对全量文件进行导入

  4. 用 mongorestore --oplogReplay 分别对各时间段的oplog文件进行导入

关于mongodb增量备份脚本的实现问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


当前名称:mongodb增量备份脚本的实现
文章路径:http://scyanting.com/article/gjdccs.html