Mongodb 分片平衡失敗
mongos
具有 1 個和 3 個mongod
實例的 Mongo 集群上的數據平衡失敗。集合的所有數據都fs.chunks
保留在同一個分片中,並出現以下錯誤。環境:Ubuntu-AWS m3.large,
錯誤來自
sh.status()
6 : Failed with error ‘could not acquire collection lock for test.fs.chunks to migrate chunk [{ : MinKey },{ : MaxKey }) :: 由 :: Lock for Migrating chunk [{ : MinKey }, { : MaxKey }) in test.fs.chunks istake.’, from shard0001 to shard0000
3826 : Failed with error ‘moveChunk failed to meet TO-shard in the data transfer: can’t accept new chunks because there is still 7 deletes from previous migration ‘, 從 shard0000 到 shard0001
7655 : 失敗並出現錯誤 ‘moveChunk 未能在數據傳輸中使用 TO-shard:不能接受新的塊,因為之前的遷移仍有 4 次刪除’,從 shard0001 到 shard0000
因為我能夠看到塊錯誤,例如
3826 : 從 shard0000 到 shard0001 失敗並出現錯誤“moveChunk 未能在數據傳輸中使用 TO-shard:無法接受新的塊,因為仍有 7 個刪除”,從 shard0000 到 shard0001 7655 : 失敗並出現錯誤“moveChunk 未能參與 TO -shard in the data transfer: can’t accept new chunks because there are still 4 deletes from previous migration’, 從 shard0001 到 shard0000
正如此處
Asya Kamsky
的google 分組文件導入大量數據時,總是最好預先拆分集合併在分片之間均勻分佈塊,並 在開始數據載入*之前禁用平衡器。*否則,您將看到遷移和新數據負載競爭相同的資源,從而降低兩者的性能。是的,您應該/可以在導入完成後重新啟用平衡器。但當然最好按照此處所述進行預拆分/預平衡。
如需進一步參考,請點擊此處
最初是jjussi的評論:
幾年前,我自己也看到了這些錯誤。
如果我沒記錯的話,重新啟動源分片的主分片就足以刷新那些卡住的刪除。