删除数据库,磁盘空间没变少

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.1
我删除了几十个库,磁盘空间没有下降,会是什么问题啊

GC时间默认十分钟,你可以等会再看看。
https://docs.pingcap.com/zh/tidb/v6.5/garbage-collection-overview#gc-机制简介

是需要等一会儿的

tidb 删除数据后会先把要清理的 kv 段写入 mysql.gc_delete_range,里面有个 ts 记录删库的时间戳
然后每 @@tidb_gc_run_interval 会检查一次,如果当前集群 min(minStartTs, now) + @@tidb_gc_life_time > ts,则会实际清理
所以数据没清理掉可能是

  1. @@tidb_gc_run_interval 没到,还没开始清理逻辑
  2. 还没过 @@tidb_gc_life_time,数据还存活
  3. 当前有正在进行的 txn 卡住了 min(minStartTs, now) 的计算

具体可以在 tidb log 里以 “[gc worker]” 为关键字搜索 (只有一台 tidb 会成为 gc leader,可能得到处看看)

2 个赞

可以我已经删除好几天了

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

TiKV 组件内 GC 原理及常见问题

有没有办法查 无效的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 字样
image

gc清理需要时间的。

还没到你设置的GC时间吧

搜一下手动合并region,删除多余无效的空region