如何创建 MongoDB 副本集的一致(起始)时间点备份?

如何创建 MongoDB 副本集的一致(起始)时间点备份?

我想以一种能够确保备份开始时数据库一致性的方式备份 MongoDB 副本集。如文档所述,--oplog标记为mongodump还将在备份过程中复制 oplog。但是,这确保了备份过程结束时时间点的完整性,这可能在过程开始后数十分钟。

我一直在想一些办法:

  • 在给定时间关闭其中一个节点并直接从数据文件进行离线备份。
  • 获取某个节点的全局写锁(这可能吗?),然后针对该备份节点启动备份过程。

还有其他方法可以确保我从某个特定的定义时间获得准确的(约 5 秒窗口)转储吗?

答案1

有几种方法可以完成“起始”时间点备份。请注意,以下内容适用于备份副本集。分片集群的备份更加复杂。

1)关闭mongod

关闭 mongod 进程并复制文件或对文件集执行 mongodump。

2)锁定/刷新数据

Adb.fsyncLock()mongo shell 调用或执行相关的 fsyncLock 命令将阻止写入并允许您复制数据/文件集。此命令将阻止写入并刷新数据文件。

3)时间点文件系统快照

如果您拥有一种允许对数据和日志文件进行时间点快照的机制,则可以使用该机制获取时间点副本。在 Linux 上,实现此目的的一种好方法是通过 LVM,其中数据和日志文件位于单个卷组中。

4)彩信备份

MongoDB Inc 提供备份服务,可实现时间点恢复。有两种选择,云备份服务或托管备份。两者都是付费服务,第一种按使用量计费,第二种向 MongoDB 订阅者收费。

相关内容