首页 > 解决方案 > 无法用一个丢失的集合 wt 文件启动 mongod

问题描述

我有一个工作的 mongod 实例(v3.2.21)。

但突然它停止工作了。当我运行 mongo 命令时,它会抛出以下错误:

2019-06-04T13:52:41.725+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 Connection refused

当我检查日志时,它的显示:

2019-06-04T13:36:43.388+0000 E STORAGE  [initandlisten] WiredTiger (2) [1559655403:388180][8404:0x7fb74e904c80], file:collection-1-1305830686620002691.wt, WT_SESSION.open_cursor: /mnt/volume-fra1-01//collection-1-1305830686620002691.wt: handle-open: open: No such file or directory
2019-06-04T13:36:43.388+0000 E STORAGE  [initandlisten] no cursor for uri: table:collection-1-1305830686620002691
2019-06-04T13:36:43.388+0000 F -        [initandlisten] Invalid access at address: 0x58
2019-06-04T13:36:43.398+0000 F -        [initandlisten] Got signal: 11 (Segmentation fault).

之前的集合现在在数据目录中丢失了

我尝试使用 --repair 但该过程在此集合处停止。

我查看了各种资源,但无法弄清楚如何使其工作?有没有办法让wiredtiger 逃离这个系列?

标签: mongodbwiredtiger

解决方案


MongoD 4.0.3 和更新版本根据SERVER-19815具有更好的修复设施。

您可以尝试一件事:

  1. 复制您的原始dbpath数据,因此如果尝试不成功,您不会破坏原始数据
  2. 下载 4.0.3 二进制文件(或更新,目前最新的是 4.0.10)
  3. mongod --repair使用 4.0.3 二进制文件尝试修复复制的dbpath
  4. 如果修复成功,尝试运行指向修复后的 3.2.21 二进制文件dbpath

请注意,此修复尝试是尽力而为,并且不能保证成功。仍然建议进行最新备份。您可能还想调查dbpath缺少文件的原因。


推荐阅读