mongodb - 无法用一个丢失的集合 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 逃离这个系列?
解决方案
MongoD 4.0.3 和更新版本根据SERVER-19815具有更好的修复设施。
您可以尝试一件事:
- 复制您的原始
dbpath
数据,因此如果尝试不成功,您不会破坏原始数据 - 下载 4.0.3 二进制文件(或更新,目前最新的是 4.0.10)
mongod --repair
使用 4.0.3 二进制文件尝试修复复制的dbpath
- 如果修复成功,尝试运行指向修复后的 3.2.21 二进制文件
dbpath
请注意,此修复尝试是尽力而为,并且不能保证成功。仍然建议进行最新备份。您可能还想调查dbpath
缺少文件的原因。
推荐阅读
- rust - 如何在每一步将一些值转移到 Rust 生成器中?
- reactjs - 我可以在没有服务器的情况下通过 React 中的 Stripe Checkout 客户端完成购买吗?
- python - 如何在 Python Logger 中设置日期时间固定值作为结果?
- excel - 用户窗体上的类对象文本框可用方法
- api - 我尝试使用 POST 将文件下载到我的 api 时出现 404 错误是什么?
- objective-c - 是否可以在应用程序处于后台或被杀死时解析推送通知的内容并插入到 SQLIte 中?
- c - 如何使用 open mpi 共享字符串数组
- java - Java多线程环境下访问数据库
- java - 在 base64 中提取带有内联附件的电子邮件正文
- flutter - Flutter BottomNavigationBarItem 只接受 Icon 而没有其他小部件?