是否可以從 .ns 和 .0、.1、….文件?
我在 Ubuntu 12.10 上安裝了 MongoDB 2.0.4。最近我從外部連接到數據庫時遇到了一些問題,並且發現有一些東西阻止了 MongoDB 正確啟動。正如幾個來源(參見 StackOverflow)所建議的那樣,我刪除
/var/lib/mongodb/mongodb.lock
並執行了mongod --repair
. 這並沒有解決問題,MongoDB 無法執行並繼續創建鎖定文件,之後它不會負責刪除。通過查看日誌,我意識到它無權訪問某個名為 的文件夾$tmpSomething
,因此(因為名稱暗示了一個臨時文件夾)我刪除了它,然後一切正常……除了我只有一個我以前的數據庫在視線範圍內,而其他數據庫仍然存在,因為我的/var/lib/mongodb/
文件夾仍然充滿.ns .0 .1 .n
很重的文件。有沒有辦法將它們恢復到數據庫中?(我曾嘗試使用 mongorestore,但正如我所料,它不處理這些文件)。謝謝
.ns .0 .1
etc. 文件是數據文件本身。如果您使用指向該文件夾的參數啟動了一個mongod
實例,或者如果您將內容移動到其他地方並使用指向那裡的選項,mongod 將嘗試正常讀取它們。--dbpath
由於您的問題表明損壞和/或其他一些問題開始
mongod
(您應該真正發布啟動消息日誌文件,也許在一個單獨的問題中解決該問題),那麼還有其他選擇。作為參考,最常見的問題是權限相關的問題,尤其是當人們嘗試手動啟動 mongod(以自己的身份)或使用 sudo(以 root 身份)並在各個目錄中創建有問題的權限時。您是正確的,
mongorestore
不能直接使用這些數據文件,但mongodump
可以讀取它們並將其中的數據轉儲到mongorestore
預期的 BSON 文件中。您想要的選項是dbpath。你提到你的路徑是
/var/lib/mongo
,所以你可以執行這樣的東西:mongodump --dbpath /var/lib/mongo -d <database name> -o /path/to/put/files
或者,您也可以使用
--repair
此處來修復損壞以及極端情況下的查詢選項,以繞過損壞的部分(如果有的話,很少需要)。頁面上描述了各種選項mongodump
:http://docs.mongodb.org/manual/reference/mongodump/
轉儲文件後,您可以使用
mongorestore
將它們重新導入另一個mongod
實例。