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

最近跟数据恢复杠上了,这不又来一例。关于备份恢复的问题其实我在6年多以前就写过,其中大部分讨论放在今天仍然适用。
1
案例介绍
某用户使用了MongoDB 4.0,数据库中的一个表因为drop操作导致数据全部丢失。但因为库本身很小,而oplog空间足够大,所以从建库至今的所有操作都尚在oplog中没有被回收。基于这种情况,虽然他们没有全量备份,我们仍然可以通过完整重放oplog来找回所有丢失的数据。所以我们的操作是:
-
导出
oplog; -
寻找
drop发生的时间戳; -
重放到
drop前一刻; -
将恢复的数据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。这里有两种办法
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
