mongod.lock 不是零字节文件,但 mongod 还是启动了

mongod.lock was not a zero-byte file but mongod started anyway

我在我的本地机器上使用 MongoDB 运行 的单个实例,并且想编写一个自动修复例程,因为数据库将与我当前工作的用户应用程序捆绑在一起上。

docs 说有一个 mongod.lock 文件表明数据库需要修复:

If the mongod.lock file in the data directory specified by dbPath, /data/db by default, is not a zero-byte file, then mongod will refuse to start, [...]

我的 mogod 进程开始时很顺利,但我的修复例程告诉我数据库需要修复。修复例程只是寻找 mongod.lock 的文件大小,它是 5 个字节并且 cat mongod.lock 给出了以下内容:

9817

所以根据上面的文档引用,我想知道即使 mongod.lock 文件绝对 不是 零字节文件,MongoDB 怎么可能无论如何开始。

文档参考了 运行 Mongo 没有日记的情况。如果您开启了日记功能,那么 Mongo 将尝试自行修复。 您在 .lock 文件中看到的数字是进程 ID。如果进程不是 运行,那么端口可能未被使用,如果数据文件没有损坏,Mongo 可能会成功重启进程。