2012-03-29 108 views
2

我有一個集合的分片鍵和索引endabled。但是當我運行平衡時,塊不會移動到這個集合中,因爲其他集合塊正在按預期方式移動到其他機器。只有一個塊從該集合中移出。mongo數據庫平衡

回答

2

目前(這將在不久的將來發生變化),平衡器將只在有足夠的不平衡(8或更多)時開始移動塊。如果塊數比這更接近,那麼將不會有移動。塊的數量取決於最大塊大小(在2.0.x中寫入時爲64MB)和寫入的數據量。每當將一定數量的數據寫入塊時就會觸發分割。

因此,如果您不是將數據添加到集合中,或者數據不是非常大,則可能需要一些時間才能創建必要的塊數,以便引發平衡。

您可以通過手動分裂考慮到這一點你自己的手中,並移動塊:

http://www.mongodb.org/display/DOCS/Splitting+Shard+Chunks

或者,您可以添加更多的數據來觸發分裂和平衡最終會踢,移動塊在你身邊。

+0

我的數據是非常巨大的數百萬條記錄每個記錄約3000個字符。當我做printShrdingStatus時,它顯示一臺機器有2500個塊,其他機器有1個塊,每個 – Sandeep 2012-03-29 09:59:01

+0

在日誌中有錯誤?如果平衡器不能移動塊(塊太大是常見塊),應該存在。你可能想嘗試一些手動操作,看看它們是否工作。 – 2012-03-29 10:55:37