使用operator add split-region 处理热点regions 问题,可是反问更严重?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:V3.0.12
  • 【问题描述】:使用operator add split-region 处理热点regions 问题,可是反问更严重了,什么问题呀?
    发现 split-region 只是把一个region 变成了两个,并且还在这个store上面,没有迁移的动作,热点问题还是不能解决。
    下面为拆分之前的状况:
root@EM-6CU649E6X8: ~# python table-regions.py --host ip --port 10080 dbname asset_his
[RECORD - dbname.asset_his] - Leaders Distribution:
  total leader count: 7
  store: 17, num_leaders: 1, percentage: 14.29%
  store: 11, num_leaders: 1, percentage: 14.29%
  store: 12, num_leaders: 1, percentage: 14.29%
  store: 14, num_leaders: 1, percentage: 14.29%
  **store: 15, num_leaders: 3, percentage: 42.86%**

执行15 store 对应的regions 进行拆分:

./pd-ctl -u http://ip:2379 operator add split-region 170659
./pd-ctl -u http://ip:2379 operator add split-region 170602
./pd-ctl -u http://ip:2379 operator add split-region 170701
./pd-ctl -u http://ip:2379 operator add split-region 170667

之后在查看:

[RECORD - dbname.asset_his] - Leaders Distribution:
  total leader count: 9
  store: 17, num_leaders: 1, percentage: 11.11%
  store: 11, num_leaders: 1, percentage: 11.11%
  store: 12, num_leaders: 1, percentage: 11.11%
  store: 14, num_leaders: 1, percentage: 11.11%
  **store: 15, num_leaders: 5, percentage: 55.56%**

还是分在了该15号store 上面了

再执行一次operator add split-region
发现还是在改store 上进行拆分,并没有迁移到其他store上面
total leader count: 13
store: 17, num_leaders: 1, percentage: 7.69%
store: 11, num_leaders: 1, percentage: 7.69%
store: 12, num_leaders: 1, percentage: 7.69%
store: 14, num_leaders: 1, percentage: 7.69%
store: 15, num_leaders: 9, percentage: 69.23%

下面为面板信息:

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

还有怎么查看表分region是根据内部rowid 分的,还是主键分的?

1、 看给出的信息,表对应的 leader 也不多,split 之后没有调度,可以尝试手动 transfer store 15 上面的 leader 到其他节点,参考文档:https://pingcap.com/docs-cn/stable/pd-control/#member-delete--leader_priority--leader-show--resign--transfer-ltmember_namegt

2、看下 PD 监控部分调度是否正常:PD -> schedule 面板 以及 store 的空间使用信息。

3、看下调度部分文档:https://pingcap.com/docs-cn/stable/best-practices/pd-scheduling-best-practices/#pd-调度策略最佳实践

手工调度我了解的,只是想知道在什么情况下,不会自动调度,现在只做了split,move 到其他节点没有运行,什么问题导致的?



不会自动调度问题需要看下:

1、调度是否正常,可以看 PD → schedule 面板 Scheduler is running 项是否有 leader-balance-schedule ,或者pd-ctl → scheduler show 看下是否有调度产生。同时看截图里面 balance leader movement 指标没有,不确定是显示问题还是没有调度产生,可以结合上面的排查来确定。如果没有配置调度,可以 pd-ctl → scheduler add balance-leader-scheduler

2、在上面发的第二个文档里面介绍了 leader/region 不均衡的排查和处理版本,可以看下



只根据store 上所有 Leader 所对应的 Region Size 加和作为得分,是不是太简单了,因为热点是表或者索引等对象级别的,有些可能是冷数据,把对应的store 均匀化了,误认为得分一样,所以不move 到其他store?

热点的调度正常情况下是一直都有的,会自动 balance 热点的 region。针对提出来的问题,在调度不及时或者调度被影响情况下是会发生的。最开始提出来的 leader 不均衡问题,如果根据给出的文档还没有结论的话,需要完整的看下 PD 面板的监控:

1)使用 chrome 浏览器,安装“Full Page Screen Capture”插件:https://chrome.google.com/webstore/detail/full-page-screen-capture/fdpohaocaechififmbbbbbknoalclacl

2)展开grafana 监控的 “cluster-name-overview” 的所有 dashboard (先按 d 再按 E 可将所有 Rows 的 Panels 打开,需等待一段时间待页面加载完成)

3)使用插件导出 pdf