我正在尝试使用散列分片键分割mongodb分片群集中的几个jumbo块:{group_id:"hashed"}.
我使用mongodb docs中的以下命令来拆分这些巨型块:
db.runCommand( { split: "test.people",
bounds : [ { group_id: NumberLong("-5838464104018346494") },
{ group_id: NumberLong("-5557153028469814163") }
] } )
Run Code Online (Sandbox Code Playgroud)
但是得到以下错误:
{ "cause" : { }, "ok" : 0, "errmsg" : "split failed" }.
Run Code Online (Sandbox Code Playgroud)
这次失败的可能原因是什么?分片键group_id的基数为26231,总共4521157个文档.
检查了这个讨论,但无法找到原因.
PS:group_id是ObjectId.
你的基数太小了。当他达到 64mb 时,一大块将自动分裂。
目前,基数为 26231,在没有巨型块的情况下,您的集合不能大于 26231*64mb 最大值...并且您可能会在此之前很长一段时间遇到问题,除非您有一个完美的分布。
在您的情况下,您没有任何 group_id 值,从而导致 NumberLong("-5838464104018346494") 和 NumberLong("-5557153028469814163") 之间的哈希值...
所以你不能分割它,因为你的基数太小了。
总而言之,您立即需要一个更好的分片键,这意味着 mongodump 所有内容,然后使用新的分片键进行 mongorestore。
归档时间: |
|
查看次数: |
591 次 |
最近记录: |