On this page
意外关闭后恢复独立服务器
当独立的mongod实例禁用日记功能[1]时,不正常的关闭可能会使数据处于不一致状态。异常关闭后,如果存在非空的mongod.lock
文件,则mongod实例在重新启动时记录以下消息:
Detected unclean shutdown - mongod.lock is not empty.
如果dbPath包含非空的mongod.lock
文件,则必须修复数据库。本教程概述了修复独立mongod数据库的过程。
Warning
不要使用本教程恢复replica set的成员。相反,您应该从backup恢复,或者从集合的另一个成员重新同步,如重新同步副本集的成员中所述。
[1] | 默认情况下,MongoDB 在启用journaling的情况下运行,以防止在关闭时出现数据不一致的情况。要彻底关闭,请参阅停止 mongod 进程。 |
Procedure
Important
以通常运行mongod进程的同一用户身份运行修复操作,以避免更改 MongoDB 数据文件的权限。
创建数据文件的备份。
在--dbpath中创建数据文件的备份副本。
以--repair 启动 mongod。
要修复数据文件,请使用--repair选项启动mongod实例。默认情况下,在修复操作期间,MongoDB 使用--dbpath中的_tmp
目录。
如果mongod实例使用MMAPv1 存储引擎,则可以包括--repairpath选项以指定备用临时目录。有关详细信息,请参见--repairpath。
发出类似于以下内容的命令:
mongod --dbpath /data/db --repair
完成后,dbpath
应包含已修复的数据文件和一个空的mongod.lock
文件。 [2]