2015-11-04 99 views
1

我的MongoDB正在Windows Server2012 R2上運行。 直到今天,我才能夠訪問MongoDb,當時它意外崩潰。 錯誤日誌如下:意外關閉MongoDB。無法重新啓動

2015-11-03T06:41:33.057-0800 I JOURNAL [journal writer] error exception in dur::**journal error appending to file** c:\data\db\journal\j._1 8192 8192 errno:112 There is not enough space on the disk. 
2015-11-03T06:41:33.080-0800 F JOURNAL [journal writer] **dbexception in journalWriterThread causing immediate shutdown**: 13517 error appending to file c:\data\db\journal\j._1 8192 8192 errno:112 **There is not enough space on the disk.** 
2015-11-03T06:41:33.081-0800 I -  [journal writer] Invariant failure false src\mongo\db\storage\mmap_v1\dur_journal_writer.cpp 258 
2015-11-03T06:41:37.818-0800 I CONTROL [journal writer] mongod.exe ...\src\mongo\util\stacktrace_win.cpp(175)      mongo::printStackTrace+0x43 
2015-11-03T06:41:37.818-0800 I CONTROL [journal writer] mongod.exe ...\src\mongo\util\log.cpp(135)         mongo::logContext+0x97 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] mongod.exe ...\src\mongo\util\assert_util.cpp(147)       mongo::invariantFailed+0xf0 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] mongod.exe ...\src\mongo\db\storage\mmap_v1\dur_journal_writer.cpp(258)  `mongo::dur::JournalWriter::_journalWriterThread'::`1'::catch$0+0x8c 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] MSVCR120.dll                 _unDNameEx+0x268 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] MSVCR120.dll                 _BuildCatchObjectHelper+0x345 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] ntdll.dll                  RtlCaptureContext+0x3c3 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] mongod.exe ...\src\mongo\db\storage\mmap_v1\dur_journal_writer.cpp(244)  mongo::dur::JournalWriter::_journalWriterThread+0x35a 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] mongod.exe ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(185) boost::`anonymous namespace'::thread_start_function+0x21 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] MSVCR120.dll                 beginthreadex+0x107 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] MSVCR120.dll                 endthreadex+0x192 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] KERNEL32.DLL                 BaseThreadInitThunk+0x22 
2015-11-03T06:41:37.820-0800 I CONTROL [journal writer] 
2015-11-03T06:41:37.821-0800 I -  [journal writer] 

***aborting after invariant() failure 

我的數據庫有大約50GB的數據,並不斷增長。日誌說「錯誤附加到日誌文件。沒有足夠的空間磁盤」 。但是,我的C驅動器上仍有大約20GB的可用空間。

我無法連接到mongodb。我甚至沒有隻讀訪問。 有什麼辦法可以連接到數據庫並恢復我的數據。

+0

你在data/db目錄下的mongod.lock文件中發現了什麼? –

+0

@AlokDeshwal mongod.lock文件爲空 – riteshkasat

回答

1

我不確定,但這可能是由於預先分配日誌文件。 MongoDB通常會嘗試預先分配上一期日誌所用空間的兩倍。

因此,如果您的上一個日誌文件大小爲16GB,那麼您可能需要32GB的可用空間來啓動MongoDB。

你可以嘗試用-nojournal選項啓動你的mongoDB服務器一次來檢查這是否是問題。 但是MongoDB中不建議開始在生產環境中-nojournal選項

您可以找到有關日誌文件https://docs.mongodb.org/manual/tutorial/manage-journaling/

希望幫助更多的信息。

+0

Shivanand,我試着用-nojournal選項運行mongod。它說「等待連接」。當我啓動mongo時,它說「連接到測試」,但它永遠不會建立連接。 – riteshkasat

+0

運行mongo.exe後,我得到了PS C:\ Program Files \ MongoDB \ Server \ 3.0 \ bin>。\ mongo.exe MongoDB shell版本:3.0.5 連接到:test但是這個連接永遠不會建立 – riteshkasat

+0

服務器啓動過程中的任何錯誤? –