Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从损坏的MongoDB中修复数据_Mongodb - Fatal编程技术网

从损坏的MongoDB中修复数据

从损坏的MongoDB中修复数据,mongodb,Mongodb,我有一个损坏的Mongo数据库,无论我尝试了什么都无法恢复(尝试运行修复,但不起作用) 问题是,是否至少要从收集文件中抢救一些数据?数据库中有大约1000万个文档,我希望尽可能多地打捞 MongoDump过去能够直接针对数据库文件工作,但由于版本3.0和WiredTiger,它不再支持此功能。有没有其他方法可以直接处理收集文件并读取至少部分数据?好的,因此我们找到了一个非常棒的解决方案: 下载 下载并安装Python 下载 下载 将snappy头文件放在“WiredTiger源文件夹”下\in

我有一个损坏的Mongo数据库,无论我尝试了什么都无法恢复(尝试运行修复,但不起作用)

问题是,是否至少要从收集文件中抢救一些数据?数据库中有大约1000万个文档,我希望尽可能多地打捞


MongoDump过去能够直接针对数据库文件工作,但由于版本3.0和WiredTiger,它不再支持此功能。有没有其他方法可以直接处理收集文件并读取至少部分数据?

好的,因此我们找到了一个非常棒的解决方案:

  • 下载
  • 下载并安装Python
  • 下载
  • 下载
  • 将snappy头文件放在“WiredTiger源文件夹”下\include
  • 将snappy dll和lib文件放在“WiredTiger源文件夹”\lib下

  • 将snappy dll和lib文件放在“WiredTiger source folder”下\(重命名dll时不使用32或64,因此它是唯一的:snappy.dll和snappy.lib)

  • 运行scons.bat(位于“python安装文件夹”\Scripts下),使工作目录为WiredTiger源文件夹
  • 我们必须更新WiredTiger源文件夹中的SConstruct文件,以代替以下行:

    useSnappy=GetOption(“snappy”)

  • 我们使用了以下行:

    useSnappy=“WIREDTIGER源文件夹”

  • 整个过程的输出是支持snappy压缩器的wt.exe可执行文件

  • 然后,我们对Mongo原始文件夹中的每个*.wt文件使用wt.exe补救文件名
  • 我们必须从实际的MongoDB文件夹运行wt.exe,否则它对我们不起作用,如果您的db文件夹位于网络共享上,您必须首先将其映射到网络驱动器
在所有*.wt文件上运行wt.exe修复后,我们可以再次运行MongoDB


万岁

我遇到了一个类似的问题,mongod由于其中一个索引文件损坏而无法启动

在对损坏的文件进行快照之后,我能够通过删除损坏的索引文件来运行修复

rm index-2--2929746126664852663.wt
mongod --repair --storageEngine wiredTiger

然后,Mongod对一个损坏的收集文件执行了验证和修复操作,并关闭了自己。

Hi@sterner,这篇文章可以是上帝派来的,因为我和你4年前一样陷入了麻烦之中:)。链接不起作用,或者指向同一页。。试着按照步骤去做。。