本文主要是介绍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 <host>:<port> -d local -c oplog.rs -u <user> --authenticationDatabase <adb>
得到如下输出:
> tree dump dump └── local├── oplog.rs.bson└── oplog.rs.metadata.json1 directory, 2 files
我们需要的就是oplog.rs.bson
。
2.2 寻找截止时间戳
进行重放的关键是要先找出重放截止到哪条oplog
。这里有两种办法&#x
这篇关于MongoDB案例分享:如何使用oplog恢复数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!