我有一个损坏的mongo数据库,无论我尝试了什么都无法恢复(尝试运行修复,没有工作)。
问题是,有没有办法从收集文件中至少提取一些数据?数据库里有大约1000万份文件,我想尽可能多地抢救。
Mongodump过去可以直接对数据库文件进行操作,但是自从3.0版和WiredTiger之后,它就不再支持这种操作了。有没有其他方法可以直接处理收集文件并读取至少一些数据?

最佳答案

好吧,我们找到了一个非常棒的解决方案:
下载WiredTiger source
下载并安装python
下载SCONS
下载Snappy compressor
将snapy头文件放在“wiredtiger source folder”\include下
将snappy dll和lib文件放在“wiredtiger source folder”\lib下
将snappy dll和lib文件放在“wiredtiger source folder”下(重命名dll时不使用32或64,因此只使用snappy.dll和snappy.lib)
运行scons.bat(位于“python install folder”\scripts下),使工作目录成为wiredtiger源文件夹
我们必须更新wiredtiger源文件夹中的sconstruct文件,以便代替以下行:
useSnappy=getoption(“快照”)
我们使用了以下行:
usesnappy=“wiredtiger源文件夹”
整个过程的输出是一个支持snapy压缩器的wt.exe可执行文件
然后,我们对mongo原始文件夹中的每个*.wt文件使用wt.exe salvage文件名
我们必须从实际的mongodb文件夹运行wt.exe,否则它对我们不起作用,如果您的db文件夹位于网络共享上,则必须首先将其映射到网络驱动器
在对所有*.wt文件运行wt.exe salvage之后,我们能够再次运行MongoDB。
万岁!

关于mongodb - 来自损坏的MongoDB的打捞数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30974345/

10-09 22:15