2021元宵节记一次MongoDB集合误删除恢复实验

阅读: 评论:0

2021元宵节记一次MongoDB集合误删除恢复实验

2021元宵节记一次MongoDB集合误删除恢复实验

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. 不明白的地方1:会了再来修改 ↩︎

  2. 不明白的地方2:会了再来修改 ↩︎

本文发布于:2024-01-28 15:22:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064265708360.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:元宵节   误删除   MongoDB
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23