gpt4 book ai didi

mongodb - 分片在集群中不均衡

转载 作者:可可西里 更新时间:2023-11-01 09:37:22 26 4
gpt4 key购买 nike

我有 2 个碎片。一个是独立服务器,另一个是副本集:

mongos> db.runCommand({listshards:1})
{
"shards" : [
{
"_id" : "shard0000",
"host" : "mongo3:10001"
},
{
"_id" : "set1",
"host" : "set1/mongo1:10001,mongo2:10001"
}
],
"ok" : 1
}

我已经插入了大约 3000 万条记录。

据我所知,mongo 应该平均平衡分片之间的数据,但它并没有发生:

mongos> db.stats()
{
"raw" : {
"set1/mongo1:10001,mongo2:10001" : {
"db" : "my_ginger",
"collections" : 3,
"objects" : 5308714,
"avgObjSize" : 811.9953284354742,
"dataSize" : 4310650968,
"storageSize" : 4707774464,
"numExtents" : 23,
"indexes" : 2,
"indexSize" : 421252048,
"fileSize" : 10666115072,
"nsSizeMB" : 16,
"ok" : 1
},
"mongo3:10001" : {
"db" : "my_ginger",
"collections" : 6,
"objects" : 25162626,
"avgObjSize" : 1081.6777010475776,
"dataSize" : 27217851444,
"storageSize" : 28086624096,
"numExtents" : 38,
"indexes" : 6,
"indexSize" : 1903266512,
"fileSize" : 34276900864,
"nsSizeMB" : 16,
"ok" : 1
}
},
"objects" : 30471340,
"avgObjSize" : 1034.6936633571088,
"dataSize" : 31528502412,
"storageSize" : 32794398560,
"numExtents" : 61,
"indexes" : 8,
"indexSize" : 2324518560,
"fileSize" : 44943015936,
"ok" : 1
}

我做错了什么?

谢谢。

最佳答案

根据注释中的 sh.status() 输出,您在 shard0000(单个主机)上有 164 个 block ,在 set1(副本集)上有 85 个 block 。发生这种不平衡有几个常见原因:

  1. 你选择了一个错误的分片键(单调递增或类似)
  2. 您的所有数据最初都在一个分片上,并且正在重新平衡

平衡器将不断尝试将 block 从高分片移动到低分片,同时移动最大块(对于选择上述单调递增键的人,这有帮助)。但是,一次只能进行一次迁移,因此这将需要一些时间,尤其是如果您继续同时从分片写入/读取时。如果情况真的很糟糕,并且您确实选择了一个糟糕的分片键,那么这可能会持续一段时间。

如果您所有的数据首先都在一个分片上,然后您添加了另一个分片,那么您会遇到类似的问题 - block 数需要一段时间才能稳定下来,因为一半的数据必须从原始分片中移动(除了它的其他事件)来平衡事物。一般来说,平衡器会选择低范围的 block 首先移动,所以如果这些 block 不太可能在内存中(再次回到糟糕的分片键),那么它们将必须在迁移之前被分页。

检查平衡器是否正在运行:

http://docs.mongodb.org/manual/reference/method/sh.setBalancerState/#sh.getBalancerState

然后,要查看它在做什么,请连接到 mongos(最后 10 次操作):

use config
db.changelog.find().sort({$natural:-1}).limit(10).pretty()

类似地,如果您想查看它们的性能,您会在每个分片的主要日志中看到与迁移相关的消息,它们需要多长时间等。

关于mongodb - 分片在集群中不均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12910959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com