如何从丢失所有/ data / db中恢复

时间:2015-06-04 17:36:56

标签: mongodb

我们正在使用mongodb 3.0.2,我们的系统是通过彩信管理的 我们发现我们的新DEV环境之一丢失了/data/db的所有内容,包括日志,日志和配置文件。

有一件事是实例仍然在内存中运行。

有没有人有解决方法如何从这种情况中恢复?

我尝试了一个db.fsyncLock(),它应该将数据刷新到磁盘中,但没有运气。

1 个答案:

答案 0 :(得分:2)

AFAICT,因为文件已经被MongoDB打开/记忆,removing their entry from the filesystem不会阻止MongoDB仍然使用它们(至少在类Unix系统上)。只要它们没有关闭并且MongoDB不需要打开其他文件,事情应该仍然可用。足够开始做一些转储。

作为实验,我使用2M文档填充了新安装的MongoDB 3.0.2实例。在访问集合之前,先停止它,重新启动它,然后删除data文件夹。最后,我能够mongodump没有任何问题地收集该集合:

> for (i = 0; i < 2000000; ++i) { db.test.insert({x:i}) }
# Stop MongoDB
# Start MongoDB again

rm -rf data

mongodump -d test -c test 
# success !

# Stop MongoDB

mkdir -p data/db

# Start MongoDB again

mongorestore -d test -c test dump/test/test.bson 
> db.test.count()
2000000