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

参考官方文档:

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选项重新启动实例以完成修复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值