使用 --nojournal 选项启动 mongod 会删除现有的日志文件吗?

Starting mongod with --nojournal option deletes existing journal files?

我的 MongoDB 由于 内存不足错误 当它尝试附加到日志文件时发生崩溃。 那时,我的 mongod.lock 文件是空的。我没有任何选择地重新启动了 mongod。它正在正常接受连接。然后我运行mongo.exe,但是无法连接到数据库。它卡在 "connecting to test" 但从未成功连接。

我结束了那个过程,并使用 --nojournal 选项重新启动了 mongod。但这也无济于事。

但现在我看到 mongod.lock 文件非空。另外,我所有的日记条目都被删除了。

问题是,--noJournal 选项会删除现有的日记条目吗?另外,有没有办法恢复日记条目?

崩溃后恢复

首先,请阅读这篇文章:

Recover Data after an Unexpected Shutdown

崩溃后,您有两个选择:

  • 如果是独立实例,运行 mongod 带有 --repair 选项;
  • 如果实例是副本集的一部分,擦除所有数据并从备份中恢复或从另一个副本集成员执行初始同步。

--nojournal 选项

运行 mongod --nojournal 不会 删除日志文件。事实上,如果存在日志文件,mongod 甚至不会启动。它会给你以下消息并关闭。

Error: journal files are present in journal directory, yet starting without journaling enabled.
It is recommended that you start with journaling enabled so that recovery may occur.
exception in initAndListen: 13597 can't start without --journal enabled when journal/ files are present, terminating

如果您随后 运行 mongod 没有 --nojournal 选项,它将应用保存在日志文件中的所有更改并删除文件。只有这样你才能用 --nojournal.

重新启动它

我相信这就是您的情况。您无需尝试恢复日志文件,因为它们已应用于您的数据。