希望为mongodb执行增量备份。日记?Oplog?

希望为mongodb执行增量备份。日记?Oplog?,mongodb,backup,journaling,binlog,Mongodb,Backup,Journaling,Binlog,我想为单个mongodb数据库创建每日备份,可能是使用mongodump。为了不丢失任何数据,我希望这是增量的,所以如果在一天中发生了一些错误,我需要能够在一个MangGeStor之后重启当天的更改。 我是否正确理解需要为此使用oplog?还是写日记就是答案?我试着做了以下几点: 将我的mongo数据库转换为一个只有一个的副本集,以便创建一个oplog。(这感觉很粗糙) 使用--oplog选项重新启动mongod 执行应记录在oplog中的更改 然而,oplog中从未存储任何内容。执行此类增量备

我想为单个mongodb数据库创建每日备份,可能是使用mongodump。为了不丢失任何数据,我希望这是增量的,所以如果在一天中发生了一些错误,我需要能够在一个MangGeStor之后重启当天的更改。

我是否正确理解需要为此使用oplog?还是写日记就是答案?我试着做了以下几点:

  • 将我的mongo数据库转换为一个只有一个的副本集,以便创建一个oplog。(这感觉很粗糙)
  • 使用--oplog选项重新启动mongod
  • 执行应记录在oplog中的更改
  • 然而,oplog中从未存储任何内容。执行此类增量备份的最佳方法是什么?我基本上在寻找一种类似的方法来重放mysql binlog


    谢谢

    MongoDB没有提供现成的增量备份选项,但是可以执行文件快照并重播oplog。您是否按照文档中概述的步骤将服务器设置为副本集?

    您能告诉我们这些备份的目的吗?您是否考虑过向副本集中添加第二个节点以提高数据持久性

    如果您已经完成了将服务器设置为副本集成员的步骤,那么可以在shell中运行rs.status()

    另一个注意事项(只是澄清一下)——日志记录并不是一种备份策略;日志记录只是确保数据库在发生故障转移时能够返回到一致的状态。强烈建议在启用日志记录的情况下运行

    以下是用于备份的MongoDB文档:

    执行备份的最佳方法是将其配置为MongoDB基础架构的一部分,但它所做的不仅仅是备份

    谢谢你的澄清,我昨天已经对此进行了更多的研究,我理解需要发生什么。我想做的是每天做一次mongodump,将它保存到S3,每小时也将我的oplog保存到S3。如果你愿意的话,我有两个后续问题:1。我的oplog存储在本地数据库中,现在我可以从mongoshell访问它了。要备份oplog,我可以将所有的local.(1-N)和local.ns文件复制到s3吗?2.重播oplog的最佳方式是什么?mongorestore——oplogReplay够了吗?非常感谢!mongodump--oplog确保在转储发生时创建的任何oplog条目都可以与mongorestore--oplogReplay一起重放。不能使用mongorestore--oplogReplay重播转储完成后发生的oplog操作。您可能要研究的一个解决方案是每小时转储一次oplog集合,并使用applyOps命令:这可能有点黑客行为。。但我认为使用mongorestore——oplogReplay确实有效。我所做的是mongodump oplog,将结果“oplog.rs.bson”移动到“dump/oplog.bson”,然后运行mongorestore--oplogReplay。这危险吗?如果是的话,我肯定会使用applyOps技术。嗨,Alex,说实话,因为MongoDB不是设计成以这种方式重放oplog的,所以我无法确定这种技术是否可取。最好和最安全的解决方案可能是转储oplog并编写应用这些操作的脚本。您可能需要研究mongooplog,这是一个工具,将在MongoDB的下一个稳定版本(即将发布)中提供: