MongoDB案例分享:如何使用oplog恢复数据

最近跟数据恢复杠上了,这不又来一例。关于备份恢复的问题其实我在6年多以前就写过,其中大部分讨论放在今天仍然适用。

1

案例介绍

某用户使用了MongoDB 4.0,数据库中的一个表因为drop操作导致数据全部丢失。但因为库本身很小,而oplog空间足够大,所以从建库至今的所有操作都尚在oplog中没有被回收。基于这种情况,虽然他们没有全量备份,我们仍然可以通过完整重放oplog来找回所有丢失的数据。所以我们的操作是:

  1. 导出oplog

  2. 寻找drop发生的时间戳;

  3. 重放到drop前一刻;

  4. 将恢复的数据dump/restore到生产库;

步骤4属于基本操作就不详细叙述了,主要来看前面3步。

2

恢复步骤

2.1 导出oplog

这一步实际上特别简单。oplog位于local.oplog.rs集合中,我们可以使用mongodump直接导出,导出节点可以是主节点或从节点。基本形式是:

mongodump --host : -d local -c oplog.rs -u  --authenticationDatabase 

得到如下输出:

> tree dump
dump
└── local├── oplog.rs.bson└── oplog.rs.metadata.json1 directory, 2 files

我们需要的就是oplog.rs.bson

2.2 寻找截止时间戳

进行重放的关键是要先找出重放截止到哪条oplog。这里有两种办法&#x


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部