小编Tia*_*ago的帖子

Mongodb 增量备份

我的任务是为 MongoDB 副本集设置增量备份,作为起点,当然,我用谷歌搜索它并在 MongoDB 文档上找不到任何内容,但我确实在 Stack Overflow 上找到了这个问题,这鼓励开发我自己的解决方案因为没有发现 Tayra 很活跃。

我阅读oplog并意识到开发一些东西来重播日志非常容易,但事实证明我没有必要像mongorestore我那样这样做。

现在我有了一个使用 bash 脚本的有效解决方案,而且非常简单,这就是我在这里询问我的逻辑是否有任何缺陷的原因,或者将来可能会咬我的东西。

下面我是如何实现的:

完整备份程序

  1. 锁定在次要成员上写入 db.fsyncLock()

  2. 拍摄快照

  3. 记录 oplog 的最后一个位置

    db.oplog.rs.find().sort({$natural:-1}).limit(1).next().ts
    
    Run Code Online (Sandbox Code Playgroud)
  4. 解锁写入 db.fsyncUnlock()

增量备份过程

  1. 锁定在次要成员上写入

  2. 在完整(或最新的增量)备份上从记录的 oplog 位置转储 oplog:

    mongodump --host <secondary> -d local -c oplog.rs -o /mnt/mongo-test_backup/1 
        --query '{ "ts" : { $gt :  Timestamp(1437725201, 50) } }'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 记录最新的 oplog 位置(与完整备份相同)

  4. 解锁写入

完整备份还原过程

  1. 停止所有实例 mongod
  2. 将快照复制到将是主要的框的数据目录,但请确保排除所有local*mongod.lock 这种还原技术称为通过破坏镜像重新配置
  3. 开始初级
  4. 重新配置副本集
  5. 在没有任何数据的情况下启动辅助节点,让它们执行初始同步。或使用新local数据库从新主数据库复制数据

恢复增量备份

当我们创建增量备份时,它的存储方式如下:

/mnt/mongo-test_backup/1/local/oplog.rs.bson
/mnt/mongo-test_backup/1/local/oplog.rs.metadata.json
Run Code Online (Sandbox Code Playgroud)

我们被插入 …

mongodb backup

32
推荐指数
1
解决办法
2万
查看次数

标签 统计

backup ×1

mongodb ×1