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 和一些管理自动化。
项目主页
编撰 SegmentFault
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。