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 @ 2024-07-09 12:39  wongchaofan  阅读(6)  评论(0编辑  收藏  举报