【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.1
我删除了几十个库,磁盘空间没有下降,会是什么问题啊
是需要等一会儿的
tidb 删除数据后会先把要清理的 kv 段写入 mysql.gc_delete_range,里面有个 ts 记录删库的时间戳
然后每 @@tidb_gc_run_interval 会检查一次,如果当前集群 min(minStartTs, now) + @@tidb_gc_life_time > ts,则会实际清理
所以数据没清理掉可能是
- @@tidb_gc_run_interval 没到,还没开始清理逻辑
- 还没过 @@tidb_gc_life_time,数据还存活
- 当前有正在进行的 txn 卡住了 min(minStartTs, now) 的计算
具体可以在 tidb log 里以 “[gc worker]” 为关键字搜索 (只有一台 tidb 会成为 gc leader,可能得到处看看)
可以我已经删除好几天了
commit TS must be greater or equal to min commit TS: commit ts: 445060974279131170, min commit ts: 445060974279131171
这个会影响吗
select * from mysql.tidb看看gc推进情况
排除tidb自身问题,有可能磁盘空间没释放。lsof | grep deleted
有没有办法查 无效的region 啊
pd的监控面板里有empty_region。
没有无效的region。
所有的region前后连着,只有说这个范围中间的数据全删了,这个region变成了空的,没有说这个范围消失了的情况。
看看grafana里面empty_region的数量吧,应该会释放很多
pd调度看下,是不是region合并慢了
跟rocksdb的 compaction有关吧
可以 手动触发Compaction
gc清理的确需要时间的,可以调整参数,缩短GC清理垃圾数据的时间间隔。
看下这里面有内容吗select count(*) from mysql.gc_delete_range; ,看下这个tidb的log里有没有 gc work is too busy 字样
gc清理需要时间的。
还没到你设置的GC时间吧
搜一下手动合并region,删除多余无效的空region