有一些与之相关的SO问题。但没有一个像这个解决方案那么简单:
我在Mac OSX上运行一个独立的mongodb单一实例用于开发目的。
Mac崩溃......
重新启动mongo时,我可以看到Mongo尝试恢复(检测到mongod.lock
文件)并重新启动。
(过去,我只是吹掉我所有的本地开发数据库文件夹并重新开始。有点糟糕。但这次我决定深入挖掘一下。)
控制台输出中需要注意的关键是它找到了由'mmapv1'存储引擎创建的“文件,因此将活动存储引擎设置为'mmapv1'。”基本上覆盖了配置设置为wiredTiger。
: - 0
我的控制台(为简洁起见编辑):
db version v3.2.10
git version: 79d9b3ab5ce20f51c272b4411202710a082d0317
OpenSSL version: OpenSSL 1.0.2l 25 May 2017
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
options: { ...storage: { dbPath: "/Users/jon/databases/mongodb", directoryPerDB: true, journal: { enabled: true }, wiredTiger: { engineConfig: { cacheSizeGB: 4 } } }, ... }
Detected data files in /Users/jon/databases/mongodb created by the 'mmapv1' storage engine, so setting the active storage engine to 'mmapv1'.
Detected unclean shutdown - /Users/jon/databases/mongodb/mongod.lock is not empty.
journal dir=/Users/jon/databases/mongodb/journal
recover begin
info no lsn file in journal/ directory
recover lsn: 0
recover /Users/jon/databases/mongodb/journal/j._0
recover cleaning up
removeJournalFiles
recover done
Durability thread started
Journal writer thread started
但是我收到了这个警告:
Detected configuration for non-active storage engine wiredTiger when current storage engine is mmapv1
结局很糟糕:
***aborting after invariant() failure
...
----- END BACKTRACE -----
Abort trap: 6
答案 0 :(得分:0)
不可否认,这是一个发现自己的棘手情况。
我备份了我的整个本地文件夹,所以我可以尝试其他方法......
我查看了存储数据库文件的目录以及真正不需要的清除旧文件夹。但这可能不是事情有效的原因。
我还进行了修复(可能需要根据您的具体情况删除日志文件):
mongod --dbpath /Users/jon/databases/mongodb --repair
重新启动mongo后,一切恢复正常。