gc 不能正常工作

【 TiDB 使用环境】生产环境
【 TiDB 版本】4.0
【复现路径】5个tikv节点,误删了2个节点tikv目录后,有个节点状态有问题所以,remove它变成offline。想它变成tomestone状态然后删掉。
【遇到的问题:问题现象及影响】
【资源配置】tikv 5节点 pd 三节点 tidb 2节点
tikv 2T/节点
【复现路径】5个tikv节点,误删了2个节点tikv目录后,有个节点状态有问题,后来空间不够,truncate一个大表后,gc一直没有执行
【遇到的问题:问题现象及影响】
gc 到了 resolve locks 一直失败

[ERROR] [gc_worker.go:787] ["[gc worker] resolve locks failed"] [uuid=5cb549336b40001] [safePoint=417520979457343488] [error="loadRegion from PD failed, key: \""t\"\"x80\"\"x00\"\"x00\"\"x00\"\"x00\"\"x01m\"\"xcb_r\"\"xf8\"\"x00\"\"x00\"\"x00\"\"x01\"\"x8f\"\"xd7;\"", err: rpc error: code = Canceled desc = context canceled"] [errorVerbose="loadRegion from PD failed, key: \""t\"\"x80\"\"x00\"\"x00\"\"x00\"\"x00\"\"x01m\"\"xcb_r\"\"xf8\"\"x00\"\"x00\"\"x00\"\"x01\"\"x8f\"\"xd7;\"", err: rpc error: code = Canceled desc = context canceled\"ngithub.com/pingcap/tidb/store/tikv.(*RegionCache).loadRegion\"n\"tgithub.com/pingcap/tidb@/store/tikv/region_cache.go:621\"ngithub.com/pingcap/tidb/store/tikv.(*RegionCache).findRegionByKey\"n\"tgithub.com/pingcap/tidb@/store/tikv/region_cache.go:358\"ngithub.com/pingcap/tidb/store/tikv.(*RegionCache).LocateKey\"n\"tgithub.com/pingcap/tidb@/store/tikv/region_cache.go:318\"ngithub.com/pingcap/tidb/store/tikv.(

看了一个文章说是修改region-cache-ttl这个参数

日志如下

你的集群是几副本的呢? 要保障Region 在其他 TiKV 上有足够多的健康的副本才能够继续通过 Raft 机制进行读写。

4.0 的版本不能使用 [Online Unsafe Recovery]功能;
强制 Region 从多副本失败状态恢复服务(弃用)


https://docs.pingcap.com/zh/tidb/dev/tikv-control#设置一个-region-副本为-tombstone-状态

我是三副本,现在问题是gc worker不正常工作

无法处理要truncate表后,通过gc,回收数据

发下gc_safe_point 那个时间点看下。您设置的是多久? show variables like ‘%gc_life_time%’;

truncate 大表后,会有很多空的 region 需要进行合并操作。
您还可以在pd-ctl 看下 region的状态现在怎么样

我现在有不少空region,然后我还有个节点是新加入的,所以数据比较少
缺副本的 Region 7w多个
多副本的 Region 12个
有副本状态为 Pending 的 Region 11个



先把状态调正确了。其他的应该都会正常。

schedule 看下是不是有问题

指的是region状态嘛,store状态都是正常的

display 看下状态

image
这个发下 mysql.analyze_status表的状态

pd-ctl没这个命令

我是4.0版本没找到这张表

tiup cluster display cluster_name

我是k8s部署的,目前所有节点都是正常的