我已经损坏的Mongo数据库,无论我尝试什么都无法恢复(尝试运行修复,没有工作)。
问题是,无论如何要从集合文件中至少挽救一些数据?数据库有大约1000万份文件,我想尽可能多地打捞。
MongoDump曾经能够直接对数据库文件工作,但从版本3.0和WiredTiger开始,它不再支持这个。有没有其他方法直接对集合文件工作,并至少读取一些数据?
答案 0 :(得分:1)
好的,我们找到了一个非常棒的解决方案:
将snappy dll和lib文件放在“WiredTiger源文件夹”\ lib
将snappy dll和lib文件放在“WiredTiger源文件夹”下(重命名不带32或64的dll,所以它只有:snappy.dll和snappy.lib)
我们必须更新WiredTiger源文件夹中的SConstruct文件,以便代替以下行:
useSnappy = GetOption(“snappy”)
我们使用以下行:
useSnappy =“WIREDTIGER SOURCE FOLDER”
整个过程的输出是一个支持snappy压缩器的wt.exe可执行文件
在所有* .wt文件上运行wt.exe salvage后,我们再次运行MongoDB。
万岁!
答案 1 :(得分:0)
我遇到类似的问题,因为其中一个索引文件损坏,mongod无法启动。
在拍摄了损坏文件的快照后,我能够通过删除损坏的索引文件来运行修复。
rm index-2--2929746126664852663.wt
mongod --repair --storageEngine wiredTiger
Mongod然后对损坏的集合文件运行验证和抢救操作并自行关闭。