truncate100G数据 但磁盘空间没有释放

【 TiDB 使用环境】生产环境
【 TiDB 版本】3.0.6
1、有一个tikv节点磁盘不足,且无法扩容,想通过truncate数据释放磁盘空间,大概需要多久呢:
这是目前GC机制的时间 半小时了空间并没有释放


2、调整此个tikv节点的权重,比如设置为0.5 会释放空间么?

你这个gc时间tidb_gc_life_time是1小时,truncate后一小时做gc

如果要确认gc状态select * from mysql.tidb
看tikv_gc_safe_point时间之前的就GC了

1 个赞

等一个小时后看下,或者把tidb_gc_life_time调小一点

至少是1小时后才能释放,因为你gc life time是1小时


tikv_gc_last_run_time 不是代表做过清理了么

清理了,但清理到10:10.就是这一行下面的那个时间点。

保留的快照时间是10:10:01 如果你是10点后执行的还得等。

1 个赞

已经过了一个小时了 磁盘空间还是没回收

好吧,刚发现你是3.0,4.0开始是gc后释放,3.0的版本就不清楚了。。

truncate了也得compact才能释放空间的

要等rocksdb的gc完成后才能释放

既然清除了所有数据,感觉你可以删除表,然后创建一个一模一样的表试试。然后再过1h后看下磁盘空间是否释放

清理的是truncate执行完一小时后的数据,所以要看tikv_gc_safe_point,这个时间点之前truncate的才被gc

看下mysql.delete_range和delete_range_done有多少条数据? 再看看gc leader的tidb日志有没有busy类信息

问题1:
truncate 表后,需要等 GC 执行后完成空间释放,看你贴的GC life time 是 1h,那至少等1h后再看看了。
也可以调整一下和这个时长,通常默认值是10min,可以暂时手动调整加速GC,完后再调整回来。

问题2:
删除数据后释放空间,是由 GC 和 RocksDB Compaction 后台自动操作的,不用特地去调整 TiKV 的参数。
tikv节点磁盘不足,且无法扩容。只能去删除一些日志和数据了,至于你说的调整“权重”,我猜测你是说的pd 调度region、leader或score方面的内容,贸然调整不利于集群整体的调度。

而且有一个TiKV节点磁盘不足,我推测其他TiKV节点的磁盘空间也差不多到不足的状态了,这个TiKV节点权重放低,数据就会迁移到别的节点,搞不好容易出更大的问题。

还有,TiDB现在正式的稳定版本都已经到 v7.1了,v3.0 真的太老了,强烈建议找个契机推动一下升级,性能、稳定性和功能丰富性都有质的提升。

感谢建议,目前看起来回收了 三个tikv节点 只有一个节点满了 这个节点的leader_count比较多

gc后才会释放,tidb的truncate和mysql的不一样