2013-07-23 42 views
6

目前我們運行一個包含2個服務器+ 1個仲裁器的MongoDB複製套件。何時啓動MongoDB分片

而且我們在複製套件的數據庫中存儲了約150 GB的數據。

現在我們正在考慮何時開始分片。因爲我們想知道是否有一點你不能開始分片了。

顯而易見的是,我們將有我們跑出來的硬盤空間之前啓動分片,我們的CPU過載或整體性能去的,因爲RAM太小了。

有人還告訴我有256 GB的數據大小之後就無法啓動了分片的限制。另外我閱讀官方文檔http://docs.mongodb.org/manual/sharding/和「MongoDB權威指南」,我無法證明這一點。

從你的經驗來看,你應該開始使用分片嗎?

回答

6

當你達到60-70%的資源利用率時,我會開始分片。這可能是硬盤空間和RAM。 256 GB的限制確實存在,它的記錄在http://docs.mongodb.org/manual/reference/limits/#Sharding%20Existing%20Collection%20Data%20Size

+0

是不是固定的,因爲它更像是一個「bug」?我記得閱讀了關於它被固定的':/' – Sammaye

+0

這將是intersting;),並且如果我收到共享集合後的手動權限,它可以超過每個分片256 GB的權利? – Dukeatcoding

+0

@Dukeatcoding是的,對分片集合的大小沒有限制(每個分片也是),它只是預分片,MongoDB在創建分片時有一些問題超過256GB,不能準確記錄什麼 – Sammaye

6

我已經找到了限制,可以根據讀/寫操作;畢竟分片是關於增加容量的,主要是寫,而複製集更關心讀取。但是,對於數據範圍(分片鍵)使用單獨的服務器(節點)可以有助於讀取,因此對兩者都有效果。

例如,你可以只使用當前的服務器內存的40%,與當前的工作集,但由於被髮送到你實際上可以看到,由於IO速度的問題,單臺服務器的寫入量是。在這個時候你會考慮分片。

因此,其實我個人說,這個問題是基於大量意見,你當你覺得你需要更多的運營能力比具有成本效益的單一副本集應該碎片。

我已經知道可以採取什麼樣的,通常情況下,整個集羣將但這取決於你的預算有多大單個副本設置的。隨着電腦越來越大,它變得越來越昂貴。

+0

你可能是對的表現。由於我們每秒鐘有幾百次寫入,所以鎖定時間會越來越高,這也應該通過分片來改善嗎? – Dukeatcoding

+0

@Dukeatcoding每秒重複100次會產生鎖定問題?嗯,我的節點可以處理高達每秒100萬次操作...每個 – Sammaye

+0

@Dukeatcoding你可能在這裏有一個優化問題,通常建議你在決定分割它之前尋求優化你的數據庫 – Sammaye