mongdb無法登陸,journal 空間不足,shard IP 改變

來源:互聯網
上載者:User
今日mongodb營運中遇到的兩個問題

總體問題是mongodb叢集無法進入 一個異常是:
一個是不正當關閉mongod咋成資料損毀,mongodb會自動鎖住(產生mongod.lock檔案)、防止繼續損壞。一般這樣做的目的是防止使用者繼續寫入資料,破壞原來的資料存放區。在次情況下使用者需要刪除mongdb/data/下的mongod.lock檔案,然後執行 ./mongod --repair 執行修複,如果可以進入最好,如果還不可以進入,請仔細查看mongos.log 日誌。

這裡我遇到的問題是 mongodb 的journal空間不足。由於本人的環境是虛擬機器沒分配足夠空間,只是journal就3個G,導致journal無空間可寫。 正常情況下mongodb 有複本集情況下 journal檔案預設產生大小最大1G,然後當檔案寫滿後,再產生一個1G的檔案。也可以設定journal 沒事為smallfiles=true,這樣journal檔案可縮小到128M。1G和128M檔案不知會有什麼區別,我認為應該是縮減了日誌的儲存,在mongdb損壞再次修複的時候可能有所差別,恢複層級(程度)應該不一樣,但恢複後的準系統還是能用的。或者如果測試環境沒有必要恢複的話,可以關閉journal。關於journal在不同位元linux下的開啟關閉有所不同,簡單描述是這樣的,

linu位元 journal開啟 journal關閉
32位 journal=true journal=false
64位 journal=true nojournal=false
更多mongodb配置說明見:http://www.it165.net/database/html/201402/5303.html
在測試環境下,journal導致的空間不足,可以刪掉journal下的檔案/prealloc.1等,如果在生產環境下使用者很有必要擴充磁碟空間,解決問題。

另一個異常是:以上問題解決後還是無法進入mongdb,
 經過仔細查看mongs.log檔案,發現一個極其難發現的問題:
 [mongosMain] warning:  couldn't check dbhash on config server 192.168.178.128:20000 :: caused by :: 11002 socket exception [CONNECT_ERROR] serv
er [192.168.178.128:20000] mongos connectionpool error: couldn't connect to server 192.168.178.128:20000
很明確就是192.168.178.128:20000 config服務出了問題,可是config啟動正常啊,console輸出是正常的,但是mongos.log有如上日誌問題,折騰了好久,終於發現問題。原來是自己失誤導致的。
當初在搭建mongdb的時候IP是 192.168.178.128,現在IP變了,所以需要在mongos.cnf中修改config的配置,重新設定改為現有IP192.168.16.128。
然後就可以進入mogodb了,但是又出現了這樣的問題:
在執行show db時,無法顯示正常資訊,會報shard的問題,然後我有執行 db.shards.find() 錯誤如下:
mongos> db.shards.find()
error: {
        "$err" : "socket exception [CONNECT_ERROR] for shard1/192.168.178.128:27017,192.168.178.129:27017,192.168.178.130:27017",
        "code" : 11002,
        "shard" : "s1"
}
原來shard的IP資訊是在mongo的命令中配置的,所以需要修改shard的IP。
具體修改方式見:http://www.it165.net/database/html/201309/4520.html
但是我沒有安裝此方法,由於本人的db.shards.find()無法查詢出原有shard分配的詳細資料,所以直接把伺服器IP又改了回去。


至此本人的mongodb終於生機煥然,真是只有當問題出現時方能體會到mongdb的博大精深,世界萬物一樣的道理,但矛盾來臨,只有著手去做才能深入體會,才能更深刻的瞭解它,更嫻熟的應對它。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.