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
 要修复数据文件,请使用该mongod  --repair选项启动实例。

为您的独立设备发出类似以下命令:

mongod --dbpath /data/db --repair

完成后,dbpath应该包含修复的数据文件和一个空的mongod.lock文件。

如果修复因任何原因未能完成,您必须重新启动实例并选择--repair完成修复。

1 ] 通常,您不应手动删除该mongod.lock文件。相反,请使用上述过程恢复数据库。在紧急情况下,您可以删除该文件,使用可能已损坏的文件启动数据库,然后尝试从数据库中恢复数据。但是,在这些情况下无法预测数据库的状态。

 

 

 

 

 

 

posted @   wongchaofan  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示