是否可以從 .ns 和 .0、.1、. ... 文件?

是否可以從 .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,但正如我所料,它不處理這些文件)。

謝謝

答案1

.ns .0 .1文件是數據文件本身。如果您mongod使用指向該資料夾的參數啟動了一個實例--dbpath,或者如果您將內容移動到其他位置並使用指向那裡的選項,mongod 將嘗試正常讀取它們。

由於您的問題表明腐敗和/或其他一些問題開始mongod(您確實應該發布啟動訊息日誌文件,也許在一個單獨的問題中來解決該問題),那麼還有其他選擇。作為參考,最常見的問題與權限相關,特別是當人們嘗試手動(作為自己)或使用 sudo(作為 root)啟動 mongod 並在各個目錄中創建有問題的權限時。

您是對的,mongorestore不能直接使用這些資料文件,但mongodump可以讀取它們並將資料轉儲到mongorestore所需的 BSON 文件中。

您想要的選項是資料庫路徑。你提到你的路徑是/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實例中。

相關內容