当前位置:   article > 正文

未能与恢复服务器取得联系_在意外关闭后恢复

未能与恢复服务器取得联系

参考官方文档:

https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/

警告:

以下过程适用于独立的mongod实例。

不要使用本教程来恢复副本集的成员。 相反,您应该从备份还原或从该集的其他成员重新同步。

TIP:

如果您在启用日记功能的情况下运行,则几乎不需要运行修复,因为服务器可以使用日志文件自动将数据文件还原到干净状态。 但是,您可能在需要从磁盘级数据损坏中恢复的情况下运行修复。

磁盘级数据损坏或丢失数据文件可能会阻止mongod实例启动,并且日志文件可能不足以自动恢复:

2018-10-24T18:05:18.248-0400 W STORAGE [initandlisten] Detected unclean shutdown - mongod.lock is not empty.

...

2018-10-24T17:24:53.122-0400 E STORAGE [initandlisten] Failed to get the cursor for uri: table:collection-2-6854866147293273505

2018-10-24T17:24:53.122-0400 E STORAGE [initandlisten] This may be due to missing data files. ...

...

***aborting after fassert() failure

在这种场景下,你的dbPath 包含一个空的 mongod.lock文件

以下过程使用mongod --repair从这些情况中恢复:

告警:

如果没有其他选项,则仅使用mongod --repair(以及相关的操作repairDatabase命令和db.repairDatabase()方法)。 操作在修复过程中删除并且不保存任何损坏的数据。

从MongoDB4.0.3 开始,对于WiredTiger,mongod --repair:

  • 重建所有索引。
  • 丢弃损坏的数据。
  • 为缺少的数据/元数据文件创建空/存根文件。

过程

重要:

以通常运行mongod进程的同一用户身份运行修复操作,以避免更改MongoDB数据文件的权限。

1.创建数据文件的备份

创建--dbpath 中的 数据文件备份副本

2.使用--repair 启动mongod

要修复数据文件,请使用--repair选项启动mongod实例。

如果mongod实例使用MMAPv1存储引擎,则可以包含--repairpath选项以指定修复期间使用的临时目录。

为您的独立服务器发出类似于以下的命令:

mongod --dbpath /data/db --repair

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

注意:

对于WiredTiger,如果修复由于任何原因未能完成,则必须使用--repair选项重新启动实例以完成修复。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/305140
推荐阅读
相关标签
  

闽ICP备14008679号