2017-01-27 44 views
0

無法獲取寫鎖定最近,我們不得不處理大量的文件,並將結果轉儲到MongoDB的。MongoDB的:在一個項目上工作時,而磁盤空間

但是,我們並沒有意識到,在驅動器說我們的流程進行了填充了太多的數據,直到點「用法:100%」,而我們的流程不能創建或刪除集合。我認爲這很簡單 - 去了MongoDB,放棄了我們並不需要的一個集合。

等一下 - 我沒有發現我的車是全因爲我無法拋棄的集合?是的。我現在也不能放棄它。我也無法做一個db.repairDatabase(),也沒有空間來做到這一點。

不能拿一個寫鎖,而磁盤空間

令人沮喪吧!

+1

錯誤消息是不言自明的。你應該釋放一些空間 –

回答

-1
  1. 確定哪些數據庫不需要(數據庫,收集不)
  2. 登錄到使用

    須藤服務的mongod停止通過ssh運行您的mongod

  3. 停止MongoDB的守護進程實例

  4. 轉到MongoDB存儲數據庫的數據文件夾
  5. 識別文件名爲DB_NAME.ns,DB_NAME.0,DB_NAME.1 ... DB_NAME.n對應於要刪除
  6. 使用

    須藤RM DB_NAME刪除文件數據庫*

    (你也只是將這些文件移動到不同的驅動器與 更多的空間,直到你找出不同的解決方案)

  7. 檢查使用的磁盤空間(約〜95%,在我的情況 - 這是 足以讓我開始),並繼續完全 取決於你需要多大的空間刪除數據庫。
  8. 重新啓動MongoDB的使用

    須藤服務的mongod啓動

    - 您刪除的數據庫不見了

  9. 登錄到MongoDB的使用shell和下降的集合,你 最初開始出來做

這是一個速戰速決的概率這是要重新擡頭的那個,但是現在,這幫助我完成了事情。希望這可以幫助!該解決方案並非意在幫助誰已經設置了大型集羣與mongos備份幾個mongods MongoDB的專家 - 你們應該已經在這個聰明。它適用於小規模的測試環境,這些環境已經遇到了不幸的問題,並希望儘快修復它。

+0

減少臨時保留給root的空間會更容易,破壞性更小 - 這就是它的存在。另外,你默默承擔Ubuntu;)'sudo'不是說「我的意思是!」的Unix方式。此外,你只解決症狀,而不是根本原因 - 你沒有做(適當的)監測,更不用說資源規劃。免責聲明沒有幫助,恕我直言 - 每個部署都值得關注細節,無論其規模如何。測試環境更是如此。 –

+0

注意:所描述的方法只適用於較老的MMAP存儲引擎。一般而言,您不應直接從MongoDB的'dbPath'中刪除數據庫文件,因爲這可能會導致數據完整性問題(特別是對於MMAP以外的存儲引擎)。更可取的方法是添加或釋放額外的存儲空間。如果您沒有足夠的空間在當前的'dbPath'中執行MMAP修復,則還可以選擇使用['mongod --repairpath'](https://docs.mongodb.com/手動/參考/程序/ mongod的/#cmdoption - repairpath)。 – Stennie