触发TiKV_approximate_region_size告警,手动split超时

https://github.com/tikv/tikv/issues/14552

补充一下相关的issue,里面的日志里面也有如下内容:

[2023/04/11 18:58:53.975 +08:00] [WARN] [split_observer.rs:38] [“skip invalid split key: key is not in region”] [index=0] [end_key=] [start_key=6565636661376435FF2D626664342D3434FF34312D623364302DFF3563616530613661FF31386336FD41A062FF0800000000004300FF0000000000000000FA] [region_id=2] [key=6565636661376435FF2D626664342D3434FF34312D623364302DFF3563616530613661FF31386336FD41A062FF0800000000004300FF0000000000000000FA]

同样是split key=start key导致的分裂一直失败。写了大量的错误日志。

https://github.com/tikv/tikv/issues/9170
还有一个比较久远的issue。描述的也是一种不能分裂的情况且该issue没有关闭。
里面没有日志佐证是否属于上述这种情况,后续也没有进一步回复。

应该是bug,可能是https://github.com/tikv/tikv/issues/15282
建议你解决问题的下一步动作:
1、试下用这个split语句切分,这个切分可能算范围的方法可能不同,可能能绕过,https://docs.pingcap.com/zh/tidb/v6.5/sql-statement-split-region#语法图
2、定位大region涉及的表,复制该表数据后,drop原始表

1 个赞

很大吗这个


APPROXIMATE_SIZE很大,APPROXIMATE_KEYS却为0,而且WRITTEN_BYTES,READ_BYTES也都为0,现计划使用dumpling导出部分数据,再导入到相同表结构不同表名,复现问题

可以给官方反馈下

测试环境的话,可以试试https://docs.pingcap.com/zh/tidb/stable/tikv-control#手动-compact-单个-tikv-的数据

像bug啊

APPROXIMATE_KEYS都是0

这个集群是什么版本呢?另外业务上是不是有对同一行大量更新的操作?从而同一个 region 产生了很多 mvcc 数据,TiDB 在设计时,要求同一个 key 所在的所有 mvcc 版本数据只能落在一个 region 里面,所以如果 TiDB 中某一行数据更新过于频繁,会导致版本堆积过多而出现大 region 的情况(大于 1 G)。如果是这种情况的话,有可能碰到了 https://github.com/tikv/tikv/pull/15284

1 个赞

版本是6.5.2,了解了业务,这个表会删除掉,然后再插入

挺奇怪的,从你描述的业务上来说似乎 mvcc 不多。我建议可以通过 tikv-ctl 看下你日志中暴露出来的那个不能分裂的大 region 的属性,看下输出的情况实锤下 mvcc 是否过多 https://docs.pingcap.com/zh/tidb/stable/tikv-control#查看-region-属性
如果过多的话,可以通过 tikv-ctl 执行下这个 region 的 compaction,https://docs.pingcap.com/zh/tidb/stable/tikv-control#手动-compact-单个-tikv-的数据 ,使用 force 选项。如果 compaction 后,region size 能够下降,https://github.com/tikv/tikv/pull/15284 这个 pr 应该可以起到作用(发现 invalid split key,compaction 该 region)。建议升级到包含这个 pr 的版本。

1 个赞


这是什么操作,又可以split了,看日志,正是这些大的region

很疑惑,没看懂啥原因导致的,又为啥好的,

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