2021元宵节记一次MongoDB集合误删除恢复实验
如果有人看的话,无视排版,以后完全搞懂再回来完善
搭建复制集跳过。。。
进入主库,for循环建个10000个文档的集合
lztrepl:PRIMARY> use lzt1
lztrepl:PRIMARY> for ( var i=0; i<10000; i++){ ate({name:"Jerry"+i})}
等集合创建完成后
lztrepl:PRIMARY> unt()
10000
然后假装手滑删了他
lztrepl:PRIMARY> db.c1.drop()
误删除完毕,开始恢复。
首先,按网上的步骤,先dump出oplog.rs
mongodump -d local -c oplog.rs -o /home/backup
然后查找删除集合的时间点
bsondump oplog.rs.bson | grep ""op":"d""
可是没有发现删除的语句,网上说上一句是查找删除的语句,怎么回事?
只能进入oplog.rs.bson,按数据库和集合名来找找看
bsondump oplog.rs.bson > 233
more 233
然后定位到插入的第10000条语句,往下翻一点,看到一条
{"op":"c","ns":"lzt1.$cmd","ui":{"$binary":{"base64":"3o2L56C9Qta12i5hoi/XCg==","subType":"04"}},"o":{"drop":"c1"},"o2":{"numRecords
":{"$numberInt":"10000"}},"ts":{"$timestamp":{"t":1614305152,"i":1}},"t":{"$numberLong":"11"},"wall":{"$date":{"$numberLong":"161430
5152425"}},"v":{"$numberLong":"2"}}
其中发现"o":{“drop”:“c1”},这个应该是我删除集合的语句,但是op为什么是c,代表create的意思?这里不明白写完再去查查这块。1
好不容易找到了误删除的时间点,后面就可以恢复了
mkdir -p /home/bk
cp oplog.rs.bson /home/bk/oplog.bson
mongorestore --oplogReplay --oplogLimit "1614305152:1" /home/bk#中间运行过程掠过,这里只看结果
2021-02-26T12:43:16.930+0800 0 document(s) restored successfully. 0 document(s) failed to restore.
然后回数据库里查询,集合c1的10000条都已恢复,但是为什么上面的结果反馈的是0 document(s) restored successfully,这里也不明白2
至此,实验结束,午睡。
下午再去查那两个点。
不明白的地方1:会了再来修改 ↩︎
不明白的地方2:会了再来修改 ↩︎
本文发布于:2024-01-28 15:22:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064265708360.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |