mongodump oplog,备份单个数据库

时间:2014-08-11 02:32:59

标签: mongodb

我想使用oplog

从单个数据库创建增量备份策略

因为mongodump的--oplog选项会创建一个完整版本的转储,我想知道是否有办法:

  1. 使用" x"中的oplog选项从单个数据库 进行转储几秒钟前?
  2. 使用" x"中的单一集合 使用oplog选项进行转储几秒钟前?

1 个答案:

答案 0 :(得分:5)

  

因为mongodump的--oplog版本会创建完整版本的转储

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

  

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

     

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

您无法使用oplog从X秒前转储数据库或集合快照:

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

  • 由于没有索引(并且oplog是一个不支持添加索引的特殊用途上限集合),因此无法高效转储oplog的子集。

备份策略

使用oplog的备份策略是:

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

您可以使用oplog执行时间点还原,但由于您必须备份完整的oplog,因此它不是非常有效的增量备份策略。

如果您想逐步备份单个集合,则可以使用mongodump和"最后更新的字段" (或仅用于插入集合,"创建"时间戳)。

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

mongodump备注

的注意事项

当您使用mongodump to backup时,您还应该注意这一点:

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

相关问题: