2011-11-29 18 views
8

在Windows Server 2003箱映射文件存儲託管我們的MongoDB實例耗盡磁盤空間,並開始蒙戈生成錯誤:不能在MongoDB中

無法映射文件的內存。

向服務器添加額外磁盤空間並重新啓動MongoDB windows服務之後,對數據庫的任何操作仍會生成「無法映射文件內存」錯誤。我試圖做一個修復,甚至給出了相同的錯誤:

> db.repairDatabase(); { 「斷言」: 「不能映射文件存儲」, 「assertionCode」:10085, 「ERRMSG」: 「DB斷言失敗」, 「OK」:0 }

任何想法我可以做我的數據庫再次運作?

+0

你不需要修理你的數據庫中刪除鎖定文件。當我們的託管服務提供商關閉了MongoDB服務器而沒有發出警告時,我遇到了類似的問題。副本集不會正確啓動,並且rs.initiate()會拋出上述異常。我使用'db.shutdownServer()'關閉了服務器,並用'--repair'標誌啓動了'mongod'。完成數據庫後,能夠再次提出。謝謝你的提示! –

回答

8

停止服務,刪除鎖定文件,然後執行mongod --repair,儘管db.repairDatabase沒有。

+1

很高興知道,謝謝! –

+0

原來,這並沒有像我預期的那樣工作。即使Mongo再次運行沒有錯誤,它現在使用了90%的CPU ... – Justin

+0

謝謝。它爲我工作。 –

5

賈斯汀的回答爲我工作。

這裏有一些更詳細的說明對Ubuntu:

Stop Mongo Service: sudo service mongodb stop 
Delete Lock File: sudo rm /var/lib/mongodb/mongod.lock 
Repair the DB: sudo mongod --repair --dbpath=/var/lib/mongodb 
Restart the Mongo Service: sudo service mongodb start 

希望幫助別人。

(編輯 - 請注意,MongoDB是服務名稱,但mongod的是修復正確的命令)

+0

你不應該這樣關閉MongoDB。這樣做的最好方法是進入管理數據庫('mongo admin')中的mongo shell,然後使用以下命令關閉服務器:'db.shutdownServer()'這將產生一個乾淨的關閉,沒有任何問題來自Mongo。 –