tikv数据内存过大

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.3.0
【遇到的问题:问题现象及影响】服务器tikv里面db文件夹存储过大,这里面为什么会有好几万个,总共550g,真实数据也就100g,也不敢删,说是正常的数据
【资源配置】

检查gc情况,select * from mysql.tidb看看

.sst就是KV键值对数据,看下rockdb就知道了
https://docs.pingcap.com/tidb/v8.4/rocksdb-overview

在 TiDB 中,.sst 文件(Sorted String Table 文件)是 RocksDB 用于持久化存储数据的关键组件。RocksDB 是一种高性能的嵌入式键值存储引擎,采用 LSM-tree(Log-Structured Merge-Tree)架构。以下是 .sst 文件生成的基础和过程,以及 RocksDB 在数据持久化和检索中的作用:

.sst 文件的生成过程

  1. 数据写入:当用户向 TiDB 写入数据时,数据首先被记录到 RocksDB 的 Write Ahead Log (WAL) 中,然后写入内存中的 MemTable(一个 SkipList 数据结构)。
  2. MemTable 刷新:当 MemTable 中的数据达到一定大小时,RocksDB 会将其内容刷新到磁盘上,生成一个新的 .sst 文件。这个过程称为“刷盘”。
  3. 多级存储:.sst 文件在磁盘上以多级结构组织,通常有多达 6 个级别。当某一级别的总大小达到阈值时,RocksDB 会选择部分 .sst 文件并将其合并到下一级别。每个后续级别的大小是前一级别的 10 倍,因此大部分数据存储在最后一个级别。

换个版本吧7.3.0是DMR , 可以升级到7.5.5

1 个赞

看起来很奇怪 还没遇到过

看看grafana的overview里,是不是有很多空region?

这个怎么看呢,大佬?


这个是怎么计算出来的呢?可以先看看gc设置的多大,gc是否正常运行

会不会有经常删数据但是没来得及gc回收的表

看gc时间,如果没问题,就说明你的数据本就有500G

版本升级一下

看看GC 时间

select * from mysql.tidb

执行这句,看看tikv_gc_life_time 设置的是多长时间

10m0s

备份数据,也通过还原数据没问题,备份大小就是100左右

tikv_gc_last_run_time 和 tikv_gc_safe_point 这俩呢

这两个都是
20240808-08:08:59.683 +0800

可以看下你的gc是否正常,上次gc的时间是啥时候。br只备份leader的,数据量还要看副本数。