我想使用oplog
从单个数据库创建增量备份策略因为mongodump的--oplog选项会创建一个完整版本的转储,我想知道是否有办法:
答案 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,因此它不是非常有效的增量备份策略。
如果您想逐步备份单个集合,则可以使用mongodump
和"最后更新的字段" (或仅用于插入集合,"创建"时间戳)。
实现副本集的快速时间点备份的更常见方法是使用filesystem snapshot。根据您的底层存储层,通常可以快速完成文件系统快照,并在连续快照之间高效存储更改。快照是本地的,因此您仍需要考虑如何将备份导出到异地,作为整体策略的一部分。
mongodump
备注当您使用mongodump
to backup时,您还应该注意这一点:
local
数据库除外,其中包括oplog),但只导出索引的定义。mongodump
备份将使用最少的空间(因为您没有预先分配的存储或索引),但也有最长的时间来恢复(因为mongorestore
必须重建所有数据文件和索引)。相关问题: