【问题标题】:mongodump oplog, backup a single databasemongodump oplog,备份单个数据库
【发布时间】:2014-08-11 02:32:58
【问题描述】:

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

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

  1. 单个数据库 使用“x”秒前的 oplog 选项进行转储?
  2. 单个集合 使用 oplog 选项从“x”秒前进行转储?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    因为来自 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 时,您还应该注意这一点:

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

    相关问题:

    【讨论】:

    • 感谢您的回复。接下来我会尝试快照方法
    • @Stennie 这是一个很好的答案!
    • 嗨,斯坦尼。我看到您的个人资料刚刚发现您为 mongodb 工作。所以我有一个问题请你回答。 Que -> 为什么聚合中没有找到数组中重复项的运算符?你可以看到我的this question。人们已经回答了这个问题,但对于这个普通问题来说这是一个棘手的问题。如果您正在采取任何措施,请告诉我!!!
    猜你喜欢
    • 1970-01-01
    • 2013-07-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多