为啥tikv扩容总是触发一堆merge-region?

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.5
【复现路径】通过tiup cluster scale-out增加几个tikv节点
【遇到的问题:问题现象及影响】通过pd-ctl中的operator show发现总是一堆merge-region任务,balance-region反而很少,扩容在夜间低峰运行,扩容前operator show基本为空。
【资源配置】tikv8扩到tikv12
【附件:截图/日志/监控】





REGIN合并是受到REGIN大小参数影响的

夜里没什么实际业务呢,明显merge-region是由扩容引起的,扩容为什么会需要一堆merge-region呢?

:thinking:有可能是扩容导致单个节点上的region减少,然后发生的region合并?

1 个赞

region merge开启后,只有region的大小触发 max-merge-region-size,同时key数量触发 max-merge-region-keys才有可能发生merge,会不会是你刚好show到了呢,扩容前后有show过多少次?

这个图不能说明region merge趋势吧,schedule还包含迁移操作。

这个图其实我都没看懂 :sweat_smile:,只是看到skip和no-target-store都很高,是不是表示有点异常呢?

skip是个什么我也不懂。
@Kongdom 大佬能解惑下吗?

不是刚好show到的,是扩容开始后频繁执行show很多次总结出来的,挑了其中一次贴上来了。

补充了两张图,看起来扩容的时候还是有很多balance-leader和balance-region发生的,但确实也有一堆merge-region伴随balance-leader一起。
也许operator show里面总是看到一堆merge-region是因为merge-region是这几个操作里最重最慢的。但是为什么扩容会触发merge-region呢?


:thinking:应该就是字面上的意思,跳过的意思吧。即代表跳过调度。

2 个赞

确实,第二张图趋势已经很明显了。
理论上扩容的时候做merge能减少io次数,但是没找到相关资料。

。。。。额,看不懂监控

感觉是做了一下merge-region检查,但几乎都是跳过或者没做操作的那种,也就是没 有什么变化

看operator show和Schedule Operator Create并不是的,有很多merge-region在执行。另外没贴Schedule Operator Finish,基本上跟Schedule Operator Create的数据是一致的,表示确实都是执行了的。

我感觉是你迁移之后,对于新增节点上补充的region都做了merge check,但实际没有做merge