MongoDB dropDatabse后,数据能恢复么?
《MongoDB dropDatabse后,数据能恢复么?》要点: 欢迎参与《MongoDB dropDatabse后,数据能恢复么?》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 最近好几个社区用户咨询,错误的执行了 方案1:通过备份集恢复 如果对 MongoDB 做了全量备份 + 增量备份,那么可以通过备份集及来恢复数据.备份可以是多种形式,好比
从这里其实也可以看出一个问题,就是「部署了多节点的复制集,为什么还必要做数据备份?」;遇到误删数据库这种问题,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 引擎的特性看,能恢复的可能性较小.
从上表的描述可以看出,如果使用 mmapv1 存储引擎,dropCollection 是不会立即删除数据文件的,这种情况下,可通过分析数据文件李的bson文档来恢复数据;而其他场景的误删,数据文件会立即从磁盘删除,无法通过这种办法恢复. 最后,强烈建议大家在使用 MonogDB 数据库存储重要数据时,必定要部署复制集,并做数据备份.通常2类用户不做数据备份
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |