如何衡量 tidb 集群 空region 过多呢? 对于集群 空region 数据量达到多少 时 判断 其会造成pd 异常的呢? 有什么计算比例吗?还是就凭自己估量呢
可以通过 prometheus 和 grafna 去查阅空 region 的数量
一般出现大量的 删除或者清空数据的时候,会出现较多的 空region,
简单讲:就是空洞现象
不需要做什么判断,空region 多了会占用cpu和内存,因为需要维护 region 的状态,然后上报到 PD
有个集群 从grafana 上看到 空region 有将近200 个, 不确定会不会对集群造成影响
方法五:开启 Region Merge
注意
从 TiDB v3.0 开始, Region Merge
默认开启。
开启 Region Merge
也能减少 Region 的个数。与 Region Split
相反, Region Merge
是通过调度把相邻的小 Region 合并的过程。在集群中删除数据或者执行 Drop Table
/ Truncate Table
语句后,可以将小 Region 甚至空 Region 进行合并以减少资源的消耗。
通过 pd-ctl 设置以下参数即可开启 Region Merge
:
Copy
>> pd-ctl config set max-merge-region-size 20
>> pd-ctl config set max-merge-region-keys 200000
>> pd-ctl config set merge-schedule-limit 8
详情请参考如何配置 Region Merge(英文) 和 PD 配置文件描述。
同时,默认配置的 Region Merge
的参数设置较为保守,可以根据需求参考 PD 调度策略最佳实践中提供的方法加快 Region Merge
过程的速度。
https://docs.pingcap.com/zh/tidb/stable/massive-regions-best-practices#方法五开启-region-merge
会有影响的,你参考楼上的操作方式,调整下 Schedule 的数量,加速合并
合并完成以后,再把 数量调整还原就可以了
可以通过grafana 持续观测 empty region 的数量
一般默认的调度参数足够了,pd自己会调度进行region merge,将空region进行合并,删除大量数据的情况下,empty region数量会上升,我们线上,正常情况在10左右,偶尔会100-200的情况,超过500可以设置个告警,一般很少出现这么多
通过历史曲线看 一个月内保持在 200左右 看曲线图 基本是直线 感觉好像没有对这些 empty region 做merge 这种现象正常吗?
不太正常… 即使是慢,也会有合并动作的…
你用的啥版本?
感谢 我们现在有2集群都比较高 180 左右 和270左右 浮动 , 检查了其他集群 empty region 就 30左右, 监控只保留了1个月的数据,看不到之前是从什么时候 空region 变多的 处理监控有日志可以看到这个信息吗?
v4.0.6 版本的, 从dashboard 看日常的 sql delete 和 update 数量不是很多呀
除了 update 和delete,还需要 关注下 ddl 的操作: drop,TRUNCATE 这些操作
没有 drop,TRUNCATE ,上线以后就在没有做过 ddl 了
突然想起来 我们这个环境部分表创建时加 SHARD_ROW_ID_BITS=4 、PRE_SPLIT_REGIONS=2 参数
但是现在查看相关表regions 只有一个,刚开问题问有老师说 预分配的 region 被merge 了 , 但从当前 regions 来看 好像也不对呀
没有更多的背景和现象,很难去找问题
建议收集一下信息后,重新开个新贴…
好吧 , 很奇怪…
此问题已解决,
针对我的环境 原因有2:
1、是在ddl时使用率预分配region参数;
2、我的环境未启用扩表合并(**enable-cross-table-merge: false)
具体可查看:https://tidb.net/blog/0b1b8ff3
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。