如图,从整体来看表的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也在可用范围内整体负载不高可以不调整
大概明白为什么会产生这种情况了,这些表每天15点都会 truncate 一下,到晚上19点后开始集中写入。导致每天都是从1个 region 分裂成多个 region,在region 分裂时候,由于初始 region 所在的 TiKV 节点响应是最快的,所以基本上都是那台 TiKV 抢到了新 region 的 Leader。
又因为这几个表都是批处理写入,每次热点时间都不长,也没有触发 hot region 迁移的逻辑。
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。