无法使用一个缺少的集合wt文件启动mongod

时间:2019-06-04 14:03:47

标签: mongodb wiredtiger

我有一个正在运行的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逃离这个收藏?

1 个答案:

答案 0 :(得分:1)

根据SERVER-19815,MongoD 4.0.3及更高版本具有更好的修复功能。

您可以尝试的一件事:

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

请注意,此维修尝试是最大的努力,并且不能保证成功。仍然建议使用最新备份。您可能还想研究dbpath最初是如何缺少文件的。