使用 --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
.
重新启动它
我相信这就是您的情况。您无需尝试恢复日志文件,因为它们已应用于您的数据。
我的 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
.
我相信这就是您的情况。您无需尝试恢复日志文件,因为它们已应用于您的数据。