mongo意外关机后恢复独立设备
磁盘级数据损坏或数据文件丢失可能会阻止 mongod
实例启动,并且日志文件可能不足以自动恢复:
2018-10-24T18:05:18.248-04:00 W STORAGE [initandlisten] Detected unclean shutdown - mongod.lock is not empty. ... 2018-10-24T17:24:53.122-04:00 E STORAGE [initandlisten] Failed to get the cursor for uri: table:collection-2-6854866147293273505 2018-10-24T17:24:53.122-04:00 E STORAGE [initandlisten] This may be due to missing data files. ... ... ***aborting after fassert() failure
在这种情况下,您的dbPath
目录包含一个非空 mongod.lock
文件。
仅在别无选择时使用mongod --repair
。此操作将删除修复过程中的任何损坏数据,但不会保存这些数据。
mongod --repair对于 WiredTiger 存储引擎:
-
为具有一个或多个不一致索引的集合重建所有索引。
-
丢弃损坏的数据。
-
为丢失的数据/元数据文件创建空/存根文件。
创建数据文件的备份。
创建数据文件的备份副本
--dbpath
。Start mongod
with --repair
.
要修复数据文件,请使用该
mongod
--repair
选项启动实例。为您的独立设备发出类似以下命令:
mongod --dbpath /data/db --repair
完成后,dbpath应该包含修复的数据文件和一个空的mongod.lock文件。
如果修复因任何原因未能完成,您必须重新启动实例并选择--repair
完成修复。
[ 1 ] | 通常,您不应手动删除该mongod.lock 文件。相反,请使用上述过程恢复数据库。在紧急情况下,您可以删除该文件,使用可能已损坏的文件启动数据库,然后尝试从数据库中恢复数据。但是,在这些情况下无法预测数据库的状态。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了