某个表的 Leader 分布不均匀,怎么将其平均分配到所有 TiKV 中?

如图,从整体来看表的region 是平均分布的,每个 store 都是55个,但是实际上有51个 region 的 leader 都在 7 这个 store 上,导致在业务高峰期只有某个 TiKV 的 CPU高,其他 TiKV 节点负载很低。
如何才能怎么将Leader平均分配到所有 TiKV 中呢?

tidb 有个 scatter variable 可以开一下。

已经存在的试试 tidb api scatter 一下:tidb/docs/tidb_http_api.md at master · pingcap/tidb · GitHub
页面 search 下 scatter。记得 stop

使用pd-ctl工具手动迁移Leader。可以通过transfer-leader命令将特定Region的Leader迁移到另一个TiKV节点。

这个问题对你有啥影响吗,没啥影响就别调整了,哪有那么均衡的

如果cpu也在可用范围内整体负载不高可以不调整

企业微信截图_2e145428-2bd5-49cf-a601-9cf0159bb8df

大概明白为什么会产生这种情况了,这些表每天15点都会 truncate 一下,到晚上19点后开始集中写入。导致每天都是从1个 region 分裂成多个 region,在region 分裂时候,由于初始 region 所在的 TiKV 节点响应是最快的,所以基本上都是那台 TiKV 抢到了新 region 的 Leader。
又因为这几个表都是批处理写入,每次热点时间都不长,也没有触发 hot region 迁移的逻辑。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。