首页 > 数据库 >使用Clickhouse数据库后,硬盘占满了,怎么办

使用Clickhouse数据库后,硬盘占满了,怎么办

时间:2024-10-26 14:31:53浏览次数:5  
标签:占满 log Clickhouse system 硬盘 query event clickhouse

Hello,大家好,在我们使用了clickhouse进行数据存储后,多多少少遇到一些棘手的问题,在此记录。

我们使用clickhouse改造后,系统流畅度得到大幅提升,大家有兴趣可以来体验一下效果,Webfunny前端监控和埋点系统

如大家所知,Clickhouse数据有几大优点,很适合处理海量的数据,如:查询效率高、clickhouse号称10亿数据,毫秒级查询返回结果;数据压缩率高、它采用了列式存储,对数据压缩有天然优势,节省硬盘资源;集群化、clickhouse天生支持集群化,同时有分区和分片设计,已经涵盖了我们按天分表的设计;

因此我们义无反顾的采用clickhouse进行了改造,效果确实符合我们要求,但是迎来了第一个问题,硬盘爆了。

咦?不是说存储压缩率高,节省硬盘吗?这还没弄几下,硬盘就爆满了,咋整?今天我们就分三步来告诉大家怎么排查和优化设置。

第一步、对比查找硬盘消耗最多的东西是什么

进入linux服务器,查看总体消耗

硬盘消耗情况查看:df -h

在 Linux 系统中,/dev/vda3 通常是一个设备文件,代表一个磁盘分区,是无法通过cd命令进入的。

所以我们可以进入 cd / 然后执行 du -sh * 命令来查看硬盘占用细节。

经过一番排查,最终确定是clickhouse对硬盘的消耗最大。

第二步、排查数据库内部占用情况

通过对Table size进行排序,可以看出,数据的总量也不过就是在百兆以内,所以肯定不是业务表消耗的。

既然不是业务表,那么就应该是是系统表消耗的,所以我们在clickhouse官网上找到了关于系统表的描述,原文查看

官网描述中,介绍了有哪些系统表,已经他们的创建规则,所以我们对这些系统表进行注意排查,也许是我的数据库版本原因,有些日志表是找不到的

sql整理如下:

SELECT count(*) FROM system.query_log

SELECT count(*) FROM system.metric_log

SELECT count(*) FROM system.trace_log

SELECT count(*) FROM system.part_log

经排查,占用最多的是query_log这个系统表,虽然业务数据才几百兆,但是query_log却有几亿条,是大头,其他log也有百万到千万不等。

接着我们对query_log进行了清理,这一步耗时比较长,要耐心等一会,执行sql如下:

ALTER TABLE system.query_log DELETE 
WHERE query_start_time < '2024-10-26 00:00:00'

我们先清理的linux系统里的日志文件,然后执行删除sql,可以看到硬盘的消耗明显下降了,由此可以确定硬盘爆满的原因了。

第三步、优化配置和解决方法

clickhouse默认会采集所有的日志备用,但是很多时候我们不会去查看日志,对于不需要的经常去查看这些日志的同学,可以调整配置内容

clickhouse提供了官网配置文档,进入/etc/clickhouse-server/config.xml文件中可以调整各项参数

  • database: database the system log table belongs to. This option is deprecated now. All system log tables are under database system.
  • table: table to insert data.
  • partition_by: specify PARTITION BY expression.
  • ttl: specify table TTL expression. 这里是设置删除周期,它默认是30天,你可以设置为1天或者其他时间。
  • flush_interval_milliseconds: interval of flushing data to disk.
  • engine: provide full engine expression (starting with ENGINE = ) with parameters. This option conflicts with partition_by and ttl. If set together, the server will raise an exception and exit.
  • max_size_rows: 分区最大行数,个人认为,如果有必要可以设置小一点
<clickhouse>
    <query_log>
        <database>system</database>
        <table>query_log</table>
        <partition_by>toYYYYMM(event_date)</partition_by>
        <ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
        <!--
        <engine>ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 1024</engine>
        -->
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
        <max_size_rows>1048576</max_size_rows>
        <reserved_size_rows>8192</reserved_size_rows>
        <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
        <flush_on_crash>false</flush_on_crash>
    </query_log>
</clickhouse>

好了,这个就是我们解决clichouse硬盘爆满的整个过程了,希望对你有帮助。

标签:占满,log,Clickhouse,system,硬盘,query,event,clickhouse
From: https://www.cnblogs.com/warm-stranger/p/18504057

相关文章

  • centos硬盘迁移
    CentOS系统硬盘将某旧硬盘所有内容迁移到新硬盘一.挂载新盘1.查看磁盘分区sudofdisk-l##或者lsblk查看磁盘sudolsblk-f2.创建新的分区sudofdisk/dev/vdc3.格式化分区sudomkfs.xfs/dev/vdc14.创建挂载点目录sudomkdir/data25.挂载分区sudomount/dev......
  • Clickhouse的使用以及常见命令
    一、添加clickhouse1.下载驱动程序2.进行连接3.显示所有的架构,包括系统架构二、命令语句1.展示所有的数据库showdatabases;2.创建一个数据库叫bigdata32(ifnotexists表示如果该库不存在就进行创建)createdatabaseifnotexistsbigdata32;3.创建表--创建数据......
  • ClickHouse的下载与安装部署
    ClickHouse安装一、了解ClickHouseClickHouse是一个关系型数据库,说到关系型数据库,我们之前也学习到一个数据库Mysql,但是两者之间是有着很大区别的。MySQL数据库一般存储较少的数据(100万以内),而今天学习的ClickHouse存储的数据就相当之大,可以存储亿条数据。再者说两者的工作原理......
  • ClickHouse与MySQL对比
    总结:❓Prompt将以上我们两天内容整理并总结.可以用表格的用表格.能用画图说明的就用画图.总之就是用最好的方式呈现即可......
  • Clickhouse基本使用方法详细讲解(包括详细步骤及相关操作截图)
    超详细ClickHouse学习笔记一、ClickHouse概述ClickHouse是一个用于在线分析处理查询(OLAP)的列式数据库管理系统(DBMS)。它由Altinity公司开发,支持线性扩展和高性能的数据压缩。ClickHouse以其卓越的数据处理速度而闻名,特别适合于大规模数据集的实时查询和分析。OLTP与OLAP对比O......
  • clickhouse安装部署使用
    一、安装下载地址https://packages.clickhouse.com/rpm/stable/上传文件到Linux中开始安装1、进入到文件所在目录cd/usr/local/soft/clickhouse-rpms/2、使用rpm命令安装sudorpm-ivh*.rpm3、查看状态systemctlstatusclickhouse-server4、启......
  • Clickhouse的安装
    一、官网下载下载地址:https://packages.clickhouse.com/rpm/stable/一共需要下载这下面四个注:一个页面没有的需要点击next进入下一个界面二、下载之后使用Xterminal打开所需要建立连接的虚拟机出现如下界面之后说明连接成功三、创建一个自己的文件夹,将先前下好的rpm......
  • 一,超级详细的ClickHouse安装部署文档(RPM版安装),新手小白一看就能学会!!!
    ClickHouse安装部署博客笔记(RPM版)前言ClickHouse是一个高性能的列式数据库,专为在线分析处理(OLAP)而设计。它能够实时生成分析数据报告,并支持对大数据进行快速的查询。本文将带你一步步完成ClickHouse的单机安装部署,确保你能够顺利上手这个强大的数据库系统。第1步:下载RPM文件(下......
  • ESXi 6.7 虚拟机内 挂载 主机物理硬盘的办法(无需格式化)
    VMwareESXi的虚拟机可以主机USB或并口、串口设备,也可以使用FC、SASHBA接口卡或iSCSI连接的存储磁盘(裸磁盘分配给虚拟机),但默认情况下并不能直接使用ESXi主机本地的硬盘,必须得格式化成VMFS存储才能分配给虚拟机使用。1.找到要挂载的硬盘名称2.进入控制台执行以下命令,将......
  • 将用户数据迁移到服务器机械硬盘
    目录:类型一:在服务器上已有数据,进行数据迁移类型二:在服务器上没有数据,需要使用U盘进行传输由于固态硬盘的内存相对较小,如果说用户的数据集过大,可能会出现磁盘爆满的情况,如果说服务器上装有机械硬盘,可以考虑将用户数据集移动到机械硬盘中去。 类型一:在服务器上已有数据,进行数......