mongodb oplog,备份单个数据库



我想使用oplog从单个数据库创建一个增量备份策略

由于mongodump的——oplog选项创建了一个完整版本的转储,我想知道是否有任何方法:

  1. 单个数据库使用oplog选项从"x"秒前转储?
  2. 单个集合使用oplog选项从"x"秒前转储?

因为mongodb的——oplog版本创建了完整版本的转储

实际上,mongodump --oplog创建了oplog的部分转储,其中仅包含mongodump操作期间的操作。此选项的目的是捕获数据库的有效时间点状态,否则mongodump过程中的写入操作可能会影响备份的输出。

使用"x"中的oplog选项从单个数据库进行转储秒之前?

使用"x"中的oplog选项对单个集合进行转储秒之前?

您不能使用oplog来转储X秒前的数据库或集合快照:

  • 为了在恢复过程中有效地应用oplog, oplog必须与上次完整备份有一个共同的条目。

  • 您不能有效地转储oplog的子集,因为没有索引(并且oplog是一个特殊用途的上限集合,不支持添加索引)。

备份策略

使用oplog的备份策略是:

  • 创建数据库的定期完整备份
  • 定期备份完整oplog

您可以使用oplog进行时间点恢复,但是作为增量备份策略它不是很有效,因为您必须备份完整的oplog。

如果您想增量备份单个集合,您可以使用mongodump和"最后更新字段"来实现。(或者对于只插入的集合,使用"created";时间戳)。

实现副本集的快速时间点备份的更常见的方法是使用文件系统快照。根据您的底层存储层,文件系统快照通常可以快速完成,并有效地存储连续快照之间的更改。快照是本地的,所以作为整体策略的一部分,您仍然需要考虑如何将备份导出到异地。

mongodump的备份注意事项

当您使用mongodump进行备份时,您还应该注意:

  • 需要读取所有数据,所以如果你的数据集比内存大得多,可能会从内存中交换有用的数据。
  • 导出完整的数据(local数据库除外,其中包括oplog),但只导出索引的定义。
  • mongodump的备份将使用最少的空间(因为你没有预先分配的存储或索引),但也将有最长的时间来恢复(因为mongorestore将不得不重建所有的数据文件和索引)。

相关问题:

  • 修改并重放oplog
  • oplog.rsts字段的索引未更新

最新更新