tikv磁盘占用严重

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【概述】:场景 + 问题概述‘’
把验证环境的一个tidb表(数据量20G) 导入到测试环境tidb里,硬盘150G,tikv副本一个,tiflash副本一个,磁盘不够用。。

7f0357bd039db3723f4a316c096371b

image

image

【背景】:做过哪些操作

【现象】:业务和数据库现象

【问题】:当前遇到的问题
算上备份也就40G数据(只在写这一个表,无其他人使用),但是150G硬盘却不够用而出现了服务down机的情况

【业务影响】:


【TiDB 版本】:
4.0.13
【附件】:

这个硬盘看起来只有 50 G 为什么说 150 G

是每台50G,总共150G,数据是20G,kv和tiflash备份都设置的1

grafana dashboard 里面看一下 store size

TiKV 采用 LSM-Tree 架构的 RocksDB 作为底层存储引擎,最新写入的数据会在最上层,最老的数据在最底层。 如果用户只执行过 INSERT 而没有 UPDATE 和 DELETE 的话,那么按照默认配置 max-bytes-for-level-multiplier ,每一层的大小是上一层的十倍。 RocksDB 相同层不会有重复的数据,再乘以三个副本,因此 10GB 数据最多占据 (512MB + 1GB + 10GB) * 3 的物理空间,由于 RocksDB 还采取了针对对 key 的前缀压缩, 以及针对 block 的 LZ4 或 ZSTD 压缩,因此最终占用的磁盘空间肯定小于 33.5GB. (512MB 为L0 的 SST 文件大小。这里没有考虑索引的大小)

参考下

另外链接: https://book.tidb.io/session4/chapter7/compact.html#75-tikv-磁盘空间占用与回收常见问题

现在服务全down了,监控啥的都打不开了,pd也起不来了,pd日志:

PD 都挂了。。。太夸张了…

测试集群,都部署到一起了,3台,然后倒入20G数据就不行了

少导入点数据吧,按照配置要求来,除非你能扩容磁盘空间,不然肯定不够的


参考下

好的.


官方推荐的配置,你这差太多了,在挑战极限啊~ :+1: 有点烧脑

  • TiFlash 硬盘总容量大致为: 整个 TiKV 集群的需同步数据容量 / TiKV 副本数 * TiFlash 副本数 。例如整体 TiKV 的规划容量为 1 TB、TiKV 副本数为 3、TiFlash 副本数为 2,则 TiFlash 的推荐总容量为 1024 GB / 3 * 2 。用户可以选择同步部分表数据而非全部,具体容量可以根据需要同步的表的数据量具体分析。

表结构能放出来看下吗 ?

虽说是测试环境,部署方式是不是太草率了:joy:

tikv和tiflash分开部署

好嘞,我们后面参照官方建议来弄,谢谢谢谢

CREATE TABLE fact_2832 (
id VARCHAR(40) NOT NULL,
doc_id VARCHAR(40) DEFAULT NULL,
account_id VARCHAR(40) DEFAULT NULL,
pub_code VARCHAR(40) DEFAULT NULL,
pub_type VARCHAR(2) DEFAULT NULL,
pub_time DATETIME DEFAULT NULL,
subject1_id VARCHAR(50) DEFAULT NULL,
subject2_id VARCHAR(50) DEFAULT NULL,
subject3_id VARCHAR(50) DEFAULT NULL,
subject4_id VARCHAR(50) DEFAULT NULL,
subject5_id VARCHAR(50) DEFAULT NULL,
subject6_id VARCHAR(50) DEFAULT NULL,
subject_keyword TEXT DEFAULT NULL,
aspect1_id VARCHAR(50) DEFAULT NULL,
aspect2_id VARCHAR(50) DEFAULT NULL,
aspect3_id VARCHAR(50) DEFAULT NULL,
aspect4_id VARCHAR(50) DEFAULT NULL,
aspect5_id VARCHAR(50) DEFAULT NULL,
aspect6_id VARCHAR(50) DEFAULT NULL,
aspect_keyword TEXT DEFAULT NULL,
subject_sentiment_type_id INT(11) DEFAULT NULL,
subject_sentiment_keyword TEXT DEFAULT NULL,
sentiment_type_id INT(11) DEFAULT NULL,
unit_content TEXT DEFAULT NULL,
bi_status_id VARCHAR(20) DEFAULT NULL,
bi_attr_id INT(11) DEFAULT NULL,
process_start_time DATETIME DEFAULT NULL,
process_end_time DATETIME DEFAULT NULL,
reply_cnt INT(11) DEFAULT NULL,
view_cnt INT(11) DEFAULT NULL,
like_cnt INT(11) DEFAULT NULL,
forward_cnt INT(11) DEFAULT NULL,
dislike_cnt INT(11) DEFAULT NULL,
collect_cnt INT(11) DEFAULT NULL,
play_cnt INT(11) DEFAULT NULL,
haha_cnt INT(11) DEFAULT NULL,
love_cnt INT(11) DEFAULT NULL,
wow_cnt INT(11) DEFAULT NULL,
angry_cnt INT(11) DEFAULT NULL,
sad_cnt INT(11) DEFAULT NULL,
care_cnt INT(11) DEFAULT NULL,
coin_cnt INT(11) DEFAULT NULL,
danmaku_cnt INT(11) DEFAULT NULL,
pv INT(11) DEFAULT NULL,
keyword VARCHAR(50) DEFAULT NULL,
keyword_frequency VARCHAR(50) DEFAULT NULL,
media_id INT(11) DEFAULT NULL,
media_type_id INT(11) DEFAULT NULL,
dedup_label VARCHAR(5) DEFAULT NULL,
doc_type VARCHAR(5) DEFAULT NULL,
author_tag VARCHAR(5) DEFAULT NULL,
flag_qc TINYINT(1) DEFAULT NULL,
flag_reject TINYINT(1) DEFAULT NULL,
PRIMARY KEY (id),
KEY doc_id (doc_id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

分离 TiKV 和 TiFlash 以后,测试是否正常?