Mongodb

Mongodb 分片平衡失敗

  • January 8, 2022

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的評論:

幾年前,我自己也看到了這些錯誤。

如果我沒記錯的話,重新啟動源分片的主分片就足以刷新那些卡住的刪除。

引用自:https://dba.stackexchange.com/questions/207125