1

mreco可以恢复误删的 mongodb 数据(包括 row 和 collection)。如果你恰好误删了数据,又没有很好的备份的话,可以尝试用mreco 进行数据恢复。

安装

依赖

  • c++ boost library 4.7+
  • mongo c++ client library

编译

git clone git@github.com:zhihuiFan/mreco.git
cd mreco
scons

使用

需要一个额外的 mongo 实例,用于储存恢复的数据。这个实例需满足:

  • 使用默认端口(27017)
  • 无密码

恢复删除的 row:

mreco --deleted --db=dbname --dcoll=dbname.collection --dbpath=/data/mongo/data -t abc.vip.xxx.com -c tdb.coll

其中:

  • --deleted 表示恢复删除的row
  • --dbpath mongo 数据文件的路径。如果使用了 directoryperdb,必须同时包含 db 名。
  • -t xxx 目标 mongo 实例。
  • -c tdb.coll 存储恢复数据的数据库及 collection 名称。

恢复删除的 collection:

mreco --db=dbname --dbpath=/data/mongo/data -t abc.vip.xxx.com -c tdb.coll2

这回恢复所有删除的 colleciton 中的所有 row。无法恢复一个指定的 colleciton。如果有这样的需要,可以过滤恢复出来的数据。

报告 bug

zhihuifan@163.com

已知问题

mreco 不适用于 r2.4.6 (73ca6bf23e0d37ee781085466df6c989558c64a3) 以后的版本。

作者

mreco 的作者 zhihuiFan,是 eBay 的 DBA。热爱c++, python 和数据库技术. 目前专注于MongoDB 和一些管理自动化。

项目主页

GitHub页面


编撰 SegmentFault


思否编辑部
4.3k 声望116.9k 粉丝

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。