我正在尝试使用散列分片键分割mongodb分片群集中的几个jumbo块:{group_id:“hashed”}。
我使用mongodb docs中的以下命令来拆分这些巨型块:
db.runCommand( { split: "test.people",
bounds : [ { group_id: NumberLong("-5838464104018346494") },
{ group_id: NumberLong("-5557153028469814163") }
] } )
但是得到以下错误:
{ "cause" : { }, "ok" : 0, "errmsg" : "split failed" }.
这次失败的可能原因是什么?分片键group_id的基数为26231,总共4521157个文档。
已检查过this次但无法找到原因。
P.S:group_id是ObjectId。
答案 0 :(得分:0)
您的基数方式太小。当他达到64mb时,一个块会自动分裂。
目前,基数为26231,你的收藏不能超过26231 * 64mb,不超大块...除非你有完美的发行版,否则你可能会在很长一段时间内遇到问题。
在您的情况下,您没有任何group_id值导致NumberLong(“ - 5838464104018346494”)和NumberLong(“ - 5557153028469814163”)之间的散列值...
所以你不能拆分它,因为你的基数太小了。
总而言之,您需要一个更好的分片键立即,这意味着mongodump一切,然后mongorestore使用新的分片键。