mongodb备份与恢复(下)—ttlsa教程系列之mongodb(九)

  • A+

一. 适用于mongodb任何架构(standalon、replic set、sharding)备份脚本
需要安装perl的MongoDB模块,安装方法参见:使用cpanm安装perl相关模块 http://www.ttlsa.com/html/2030.html 。代码这东西,仁者见仁智者见智,一分价钱一分货,所以对于优秀的程序员不要抠门。对语言的熟练度高,编程经验丰富的程序员,写出来的代码,两个字:漂亮!

下面的脚本只需更改变量$mongodb相关参数即可,如有更好的更便捷的方法请赐教。

二. MongoDB增量备份方法
上一篇《mongodb备份与恢复(上)》http://www.ttlsa.com/html/1938.html 说到的方法都需要拷贝所有数据,即使数据发生很少的改变。如果数据量很大的话,备份整个数据库将消耗更多的时间和磁盘空间。这时增量备份将会是个必然的选择,记录前一次的完整备份点,后续的备份只备份从该点发生改变的数据。
这种方法需要一台专门的备份服务器backup_server,当然backup_server需要一个完整的备份,然后通过mongooplog工具来拷贝并应用mongodb_server的oplog日志。
在mongodb_server上执行以下操作:

在backup_server上执行:

SECOND值位于start值与当前时间之间。

mongooplog工具介绍:
mongooplog从远程拉取oplog日志并应用。

三. 10gen发布MongoDB增量备份服务
提供支持按照指定时间点恢复的持续增量备份功能, 不过需要支付的。
提供的特性有:mongodb备份与恢复(下)
1. 用于数据传输的SSL加密
2. 高可用性
3. 指定时间点恢复
4. 支持分片集群
5. 较低的开销

工作原理:
是一个轻量级代理,它从所有正在备份的副本集合中收集oplog,将其压缩并加密,然后通过SSL发送到运行备份服务的数据中心。
此方法的好处有:
1. 数据是增量备份的,因此传输的数据相对较小
2. 备份服务中的数据与主系统中的数据在时间上非常接近
3. 对主系统的影响不会比向副本集合中添加另一个副本大(后者非常缓慢, 可先恢复到最新备份状态,然后在加入集群中同步)
4. oplog支持将副本集合恢复到任意时间点。

有两个备份选项:快照和自定义快照。
备份服务依据一套策略创建和维持备份快照。这些快照中的任何一个都可以用于恢复。同样的,用户也可以指定一个自己希望使用的精确时间点创建一份快照。在这种情况下,将使用该时间点之前最新的快照,并会根据用户指定的时间点应用oplog。

上篇《mongodb备份与恢复(上)》  http://www.ttlsa.com/html/1938.html

如需转载请注明出处:mongodb备份与恢复(下) http://www.ttlsa.com/html/2052.html

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  2   博主  0   引用   3

    • kid 0

      报如下错误:
      Subroutine fsync redefined at /usr/local/lib64/perl5/MongoDB/MongoClient.pm line 1541.
      Can’t locate object method “new” via package “MongoDB::Connection” (perhaps you forgot to load “MongoDB::Connection”?) at ./mongo_backup.perl line 98.

        • 匿名 9

          @kid perl的mongodb包没安装

      • 来自外部的引用: 3

        • mongodb备份与恢复(上)
        • 大规模web架构gearman分布式处理应用案例
        • mongodb实战教程 漠北带你入门到精通(ttlsa出品) | HuangJin's Blog