MongoDB dropDatabse后,数据能恢复么?

来源:互联网 发布:直播声音软件 编辑:程序博客网 时间:2024/06/09 20:28

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud

最近好几个社区用户咨询,错误的执行了 dropDatabse 把数据库误删除了(或 dropCollection 误删集合),有什么方法能恢复数据?本文主要介绍几种可能有效的恢复方案。

方案1:通过备份集恢复

如果对 MongoDB 做了全量备份 + 增量备份,那么可以通过备份集及来恢复数据。备份可以是多种形式,比如

  • 通过 mongodump 等工具,对数据库产生的逻辑备份

  • 拷贝 dbpath 目录产生的物理备份

  • 文件系统、卷管理等产生的快照等

从这里其实也可以看出一个问题,就是「部署了多节点的复制集,为什么还需要做数据备份?」;遇到误删数据库这种问题,dropDatabase 命令也会同步到所有的备节点,导致所有节点的数据都被删除。

之前做过一个 MongoDB 数据备份的技术分享,介绍了阿里云 MongoDB 云数据库任意时间点备份恢复的实现方案,有兴趣的同学可以参考下,MongoDB秒级备份恢复(SDCC上海站数据库核心技术与应用实战峰会分享PPT)

方案2:通过 oplog 恢复

如果部署的是 MongoDB 复制集,这时还有一线希望,可以通过 oplog 来尽可能的恢复数据;MongoDB 复制集的每一条修改操作都会记录一条 oplog,所以当数据库被误删后,可以通过重放现有的oplog来「尽可能的恢复数据」。前不久遇到的一个用户,运气非常好,数据库是最近才创建的,所有的操作都还保留在oplog里,所以用户通过oplog把所有误删的数据都找回了。

通过 oplog 恢复数据的流程非常简单,只需要把oplog集合通过mongodump导出,然后通过mongorestore 的 oplogReplay 模式重放一下。

Step1: 导出 oplog 集合

mongodump -d local -c oplog.rs -d -o backupdir

Step2: 拷贝oplog集合的数据

mkdir new_backupdir

Step3: 重放oplog

mongorestore --oplogReplay new_backupdir

方案3:通过分析数据文件恢复

MongoDB 以 bson 的格式存储数据,所以只要 dropDatbase 或 dropCollection 后ß,对应的物理数据没有从磁盘删除,就有希望恢复,但从 MongoDB 引擎的特性看,能恢复的可能性较小。

引擎mmapv1wiredTigerdropDatabase数据文件立即会被删除不会立即从磁盘删除,空间会复用dropCollection数据文件立即会被删除数据文件立即会被删除

从上表的描述可以看出,如果使用 mmapv1 存储引擎,dropCollection 是不会立即删除数据文件的,这种情况下,可通过分析数据文件李的bson文档来恢复数据;而其他场景的误删,数据文件会立即从磁盘删除,无法通过这种方法恢复。

最后,强烈建议大家在使用 MonogDB 数据库存储重要数据时,一定要部署复制集,并做数据备份。通常2类用户不做数据备份

  • 没爱过;使用 MongoDB 存储不重要的数据,丢了也无所谓;(但即使是这样,实际数据被误删时,用户还是想尽可能的恢复数据,而不是丢了「无所谓」)

  • 爱过,但伤得不够深;使用 MongoDB 存储了重要的数据,但从未出过问题,于是抱着侥幸心理不对数据进行备份。不要等待受伤了再做备份,有备无患。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝店铺物流服务给差评怎么办 在合肥东方融资网被骗了怎么办 微信今年绑定频繁明年再试怎么办 手机号码注销了微信密码忘了怎么办 摄像师把婚礼资料弄丢了怎么办 青岛拍的婚纱照修的不好怎么办 鞋店剩的鞋都是小码的怎么办 淘宝想买的衣服下架了怎么办 买家要求到付仲裁发生运费怎么办 淘宝退货退款页面刷新不出来怎么办 淘宝退货退款快递单号写错了怎么办 淘宝上已经退款的店家还发货怎么办 千牛买家下单付款了卖家怎么办 京东货到付款支付宝支付退款怎么办 美萍餐饮管理系统下单错误怎么办 淘宝店上传宝贝显示空间不足怎么办 淘宝店品牌被投诉未授权怎么办 淘宝天猫退货单号填错了怎么办 淘宝退货我把快递单号弄丢了怎么办 唯品会退货快递单号填错了怎么办 天猫换货写错运单号怎么办 训练衣舍的店铺名连接怎么办 兼职模特被骗去微整还贷了款怎么办 卖家已经发货了我要退款怎么办 卖家显示发货单号信息查不到怎么办 淘宝申请退款卖家发货了怎么办 咸鱼卖家不发货好会自动退款怎么办 淘宝卖家涨价后不发货怎么办 淘宝卖家发货选错在线下单怎么办 申请退款后卖家又虚假发货了怎么办 公司用淘宝没发票做账怎么办 淘宝网买了假货确认了怎么办? 吃了安眠药睡了一天还没有醒怎么办 淘宝买的东西退货快递弄丢了怎么办 在淘宝上已付钱店家说没货了怎么办 从淘宝物流寄东西到国外被扣怎么办 不是天猫的淘宝卖家不发货怎么办 微店违规说卖假冒商品怎么办 云集微店的商品没货了怎么办 淘宝买家被检测有虚拟交易怎么办 媒体声音突然没有声音了该怎么办