mongodb删库后恢复

模拟删库恢复

1.重置mongo数据库副本集,准备干净环境

rm -rf /data/mongo_28017/*
rm -rf /data/mongo_28018/*
rm -rf /data/mongo_28019/*
#ps: 不要一起复制,这里停两秒不然可能会报错
mongod -f /opt/mongo_28017/conf/mongodb.conf
mongod -f /opt/mongo_28018/conf/mongodb.conf
mongod -f /opt/mongo_28019/conf/mongodb.conf

1.1 新建副本集

mongo --port 28017
rs.initiate()  #初始化副本集,28017操作
rs.add("10.0.0.51:28018")  #将28018节点加入副本集
rs.add("10.0.0.51:28019")  #将28019节点加入副本集
# rs.addArb("10.0.0.51:28020") #将28020仲裁节点加入副本集,#ps:如果要加仲裁节点放到28019设备上就在28019服务器上操作加入仲裁节点。
rs.status()   #查看副本集基本信息

2.第一天写入数据

use backup
db.backup.insertOne({"id":1})
db.backup.insertOne({"id":2})
db.backup.insertOne({"id":3})

3.第一天全备数据

rm -rf mongo_backup/
mongodump --host="dba/10.0.0.51:28017,10.0.0.51:28018,10.0.0.51:28019" -o mongo_backup
mongodump --host="dba/10.0.0.51:28017,10.0.0.51:28018,10.0.0.51:28019" -d local -o mongo_backup

4.第二天写入增量数据

mongo --port 28017
use backup
db.backup.insertOne({"id":4})
db.backup.insertOne({"id":5})
db.backup.insertOne({"id":6})

5.第二天删库

use backup
db.dropDatabase()

6.查找误删库的时间点,找到上一次全备之后的时间点和误删除的时间点

#删库语句的上一个oplog时间戳为终点。

use local
db.oplog.rs.find({"ns" : "backup.$cmd"}).pretty()
{"ts" : Timestamp(1600946847, 1),"t" : NumberLong(1),"h" : NumberLong("-2568166064082827279"),"v" : 2,"op" : "c","ns" : "backup.$cmd","ui" : UUID("f6e1ae5a-9c71-4aa2-968f-630a72fdfd12"),"wall" : ISODate("2020-09-24T11:27:27.166Z"),"o" : {"drop" : "backup"}
}

终点: 1600946847

7.切割oplog,找出上次全备到现在为止的数据

#可先进到全备目录local里将oplog.rs.bson转成json格式,取最后一行得到起点时间戳

cd mongo_backup/local
bsondump --bsonFile=oplog.rs.bson --outFile=oplog.json
tail -1 oplog.json
{"ts":{"$timestamp":{"t":1600950471,"i":1}},"t":{"$numberLong":"1"},"h":{"$numberLong":"-8346344552776369296"},"v":2,"op":"n","ns":"","wall":{"$date":"2020-09-24T12:27:51.956Z"},"o":{"msg":"periodic noop"}}

起点:1600950471

8.恢复oplog起点之后的数据,导出增量数据

mongodump \
--host="dba/10.0.0.51:28017,10.0.0.51:28018,10.0.0.51:28019" \
-d local \
-c oplog.rs \
-q '{ts:{$gt:Timestamp(1600950471,1)}}' \
-o mongo_backup_oplog
#这里填的是起点时间戳

9.移动到全备目录里 #将增量数据移到全量目录

ps:全量目录mongo_backup里面放的是原来全量的数据,现在把增量放进去数据就完整了

cd mongo_backup
cp /root/mongo_backup_oplog/local/oplog.rs.bson /root/mongo_backup/oplog.bson
rm -rf local #可删可不删,建议移走

10.在测试数据库恢复数据

mongorestore \
--host="dba/10.0.0.51:28017,10.0.0.51:28018,10.0.0.51:28019" \
--oplogReplay \
--oplogLimit=1600946847 \
./mongo_backup --drop
#这里放的是终点时间戳,意思是恢复这个时间戳之前的数据

11.把恢复后的数据导出成json格式

bsondump --bsonFile=oplog.bson --outFile=oplog.json

12.没问题后在将恢复的json文件导入到生产数据库

13.再保险做一次全备

mongodb删库后恢复相关推荐

  1. [MySQL]-删库后恢复

    [MySQL]-删库后恢复 sen格 | 2022年11月 本文旨在记录个人在数据库的删库恢复演练过程中的一些总结,如有不足,欢迎指正. 一.恢复场景 1)假设生产实例MySQL端口为:3306 2) ...

  2. mysql删库后恢复数据流程

    目录 前言 binlog 准备 备份 总结 前言 本文将介绍当我们使用mysql不小心删库之后,或者恶意被删库后,如何进行数据恢复 binlog 我们进行数据恢复的前提是: 1.必须开启binlog日 ...

  3. mysql删库后恢复_记一次MySQL删库的数据恢复

    昨天因为不可描述的原因,数据库直接被 drop database删除.在第一时间停止数据库服务和Web服务,备份MySQL数据目录下的所有文件之后,开始走上数据恢复之路. 第一次干这种事,各种不得法. ...

  4. mysql被删库如何恢复_mysql整个数据库被删除了怎么恢复

    展开全部 每个 DBA 是不是都有过删库的经e68a84e8a2ad62616964757a686964616f31333433626437历?删库了没有备份怎么办?备份恢复后无法启动服务什么情况?表 ...

  5. 删库后,除了跑路还能怎么办?

    阅读本文大概需要 1.4 分钟. 当年悟空学艺于菩提祖师门下,老师遣他下山,悟空觉得自己蒙受师傅传授大恩,还没有报答.菩提祖师就说:不要提什么报答之恩,只要你日后闯出祸来不把为师说出来就行了. 我听说 ...

  6. MongoDB 4.2 Linux勒索病毒删库清空恢复技术方案教程,没有collection*.wt、WiredTIger.wt,附件:MongoDB专用数据恢复工具!!!(2021.4.15)

    故障简述 平台:华为云ECS云服务器 操作系统:CentOS 数据库:MongoDB 4.2 数据量:数千个集合,共3TB压缩数据(实际数据约8TB) 2021年4月11日, MongoDB遭到黑客勒 ...

  7. mysql数据库recover_xxx数据库恢复 mariadb数据库误删除恢复 mysql数据库被黑删库恢复

    6月 mysql数据库被删库的太多了, 如果你也遇到了这个问题,那就保护好原始环境 不要尝试恢复了,赶紧联系专业人士处理. 这种删库后,实际的数据库表数据文件 还存在磁盘 只是文件簇链接被破坏,所以看 ...

  8. 【记录】删库如何进行恢复?

    一.前言 新年伊始,万象更新,先说点什么吧,当今日新月异的巨量信息不断冲击着人们的视觉,本人虽然不是一枚川粉吧,但也很热衷去吃瓜大统领的各种骚操作,四年来给我们普通人带来了不知道多少欢乐啊,还有各种让 ...

  9. 我删删删删库了,要跑路吗?

    每日英语,每天进步一点点(偷笑): 前言 写个简单的 Bash 脚本都不上心了,写完连检查都不检查,直接拖到到实体服务器跑. 结果一跑起来,发生不对劲,怎么一个简单脚本跑了 10  秒还没结束,于是立 ...

最新文章

  1. 【组队学习】【32期】统计学习方法习题实战
  2. 为什么数学家、统计学家和机器学习专家会用不同方式解决问题?
  3. filewriter判断是否关闭_警示丨小伙用打火机检测煤气罐是否泄漏,瞬间被火焰吞噬!...
  4. mysql中的乐观锁_MySQL中悲观锁和乐观锁到底是什么?
  5. 云漫圈 | 什么是字符串匹配算法?
  6. 重复addEventListener(事件名,的问题
  7. 电脑双系统--我想体验不一样的感觉
  8. 20200408_W_水波理论和波浪载荷
  9. 技巧:删除桌面上提示找不到该项目的文件
  10. 为IDEA配置maven镜像
  11. 谷歌浏览器打开普通用户_谷歌浏览器为啥打开之后会是其他的浏览器的解决步骤...
  12. 关于 Android 的 OMA DRM 验证
  13. 基本知识 100052
  14. 基于Docker的Redis集群搭建
  15. 智能配时、图片识别…AI为你的春运保驾护航!
  16. SpyNote的APK无法运行的问题
  17. python在地图上画路线_使用Python和Perl绘制北京跑步地图
  18. 计算机网络-15 网络测量
  19. SIEMENS/西门子1200 总线控制V90伺服程序模板
  20. 宫崎步 brave heart 歌词加谐音

热门文章

  1. 如何提升直通车人群标签精准度?
  2. Possibly consider using a shorter maxLifetime value.
  3. 超有意思的代码注释图案
  4. 基于Matlab的图片压缩(超简单)
  5. 在thinkphp中 结合 支付宝 paypal 财付通
  6. 关于fprintf与缓冲区的一点发现
  7. C# 读取PDF文本和图片
  8. 抖音上那些升100级提现1000块的游戏是什么套路?
  9. 女生学护理和计算机哪个好,女生学什么专业合适,千万不要随意选择,不然追悔莫及!...
  10. Matlab实现图像融合,将人物融合到风景图中