如何创buildMongoDB副本集的一致(开始)时间点备份?

我想以一种方式备份MongoDB副本集,以确保备份开始时数据库的一致性。 正如文档所述,– --oplog标志到mongodump将在备份过程中复制oplog。 但是,这可以确保备份过程结束时的完整性,即在过程启动后可能需要几十分钟的时间。

有些接近我一直在想:

  • 在给定时间closures其中一个节点,并直接从数据文件中进行离线备份。
  • 在对该备份节点启动备份过程之后,获取对节点的全局写入locking(甚至可能?)。

有没有其他方法可以确保从某个确定的时间获得准确的(〜5秒钟的时间)转储?

有几种方法可以完成“启动”时间点备份。 请注意,以下内容适用于备份副本集。 对分片群集的备份具有额外的复杂性。

1)closuresmongod

closures一个mongod进程并复制这些文件或者对你的文件集执行一个mongodump。

2)locking/清空数据

db.fsyncLock() mongo shell调用或执行关联的fsyncLock命令将阻止写入,并允许您复制数据/文件集。 该命令将防止写入和刷新数据文件。

3)时间点文件系统快照

如果您拥有允许数据和日记文件的时间点快照的机制,则可以使用此机制来获取时间点副本。 在Linux上,一个很好的方法是通过LVM将数据和日志文件放在一个卷组中。

4)MMS备份

MongoDB公司提供了一个备份服务,将允许时间点恢复。 有两个选项,云备份服务或托pipe备份。 两者都是付费服务,第一个是使用费,第二个是MongoDB订户。