Mongodb分片:使用Hashed Shard Key进行分块失败

时间:2015-06-12 12:21:10

标签: mongodb sharding

我正在尝试使用散列分片键分割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。

1 个答案:

答案 0 :(得分:0)

您的基数方式太小。当他达到64mb时,一个块会自动分裂。

目前,基数为26231,你的收藏不能超过26231 * 64mb,不超大块...除非你有完美的发行版,否则你可能会在很长一段时间内遇到问题。

在您的情况下,您没有任何group_id值导致NumberLong(“ - 5838464104018346494”)和NumberLong(“ - 5557153028469814163”)之间的散列值...

所以你不能拆分它,因为你的基数太小了。

总而言之,您需要一个更好的分片键立即,这意味着mongodump一切,然后mongorestore使用新的分片键。