我想使用oplog从单个数据库创建增量备份策略
由于mongodump中的--oplog选项创建了完整版本的转储,我想知道是否有方法:
使用“x”秒前的oplog选项从单个数据库进行转储?
使用“x”秒前的oplog选项从单个集合进行转储?

最佳答案

因为mongodump中的--oplog版本创建了完整版本的转储
实际上,mongodump --oplog创建的partial dump of the oplog只包含mongodump操作持续时间内的操作。此选项的目的是捕获数据库的有效时间点状态,否则mongodump过程中的写入操作会影响备份的输出。
使用“x”秒前的oplog选项从单个数据库进行转储?
使用“x”秒前的oplog选项从单个集合进行转储?
不能使用oplog转储X秒前的数据库或集合快照:
为了在还原过程中有效地应用oplog,oplog必须有一个与上次完全备份相同的条目。
由于没有索引,您无法有效地转储oplog的子集(oplog是不支持添加索引的特殊用途capped集合)。
备份策略
使用oplog的备份策略是:
创建数据库的定期完整备份
定期备份完整的oplog
您可以使用oplog来执行时间点还原,但它作为增量备份策略不是很有效,因为您必须备份完整的oplog。
如果要增量备份单个集合,可以使用mongodump和“last updated field”(或对于仅插入的集合,使用“created”时间戳)执行此操作。
实现副本集快速时间点备份的更常见方法是使用filesystem snapshot。根据您的底层存储层,文件系统快照通常可以快速完成,并有效地存储连续快照之间的更改。快照是本地的,因此您仍然必须考虑如何将备份导出到异地,作为总体策略的一部分。
备份时mongodump的注意事项
当您使用mongodump to backup时,还应注意:
需要读取所有数据,因此如果数据集比内存大得多,则可能会将有用的数据交换出内存。
导出完整数据(除了包含oplog的local数据库),但仅导出索引的定义。
mongodump备份将使用最少的空间(因为您没有预先分配的存储或索引),但恢复时间也将最长(因为mongorestore必须重建所有数据文件和索引)。
相关问题:
Modify and replay the oplog
Index on ts field in oplog.rs is not updated

10-07 13:27