【ClickHouse】 日志清理方法(query_log、query_thread_log)

一、背景

ClickHouse中的query_log、query_thread_log、trace_log等日志表,在开启之后,如果一段时间没有清理,这些日志表会占用大量的存储空间,query_log是最常用的查询日志,它记录了ClickHouse服务中所有已经执行的查询记录,下图为query_log表中的部分内容。ClickHouse默认不清理日志,这里需要自己配置。
【ClickHouse】 日志清理方法(query_log、query_thread_log)_第1张图片

二、解决方案

查了些资料发现,大家基本都是通过设置相应日志表的TTL来清理,如

ALTER TABLE system.query_log on cluster cluster_name 
MODIFY TTL event_date + INTERVAL 15 DAY 

这样处理虽然也可以,但是不太安全也不太方便

官方资料建议:直接在配置文件中设置

query_log 配置参数

使用下列参数进行日志配置(配置文件位置 /etc/clickhouse-server/config.xml)

  • database – 数据库名
  • table – 日志存放的系统表名
  • partition_by — 系统表分区键,如果定义了 engine 则不能使用
  • engine -系统表 表引擎,如果定义了 partition_by 则不能使用
  • flush_interval_milliseconds – 将数据从内存的缓冲区刷新到表的时间间隔。

Example

<query_log>
    <database>systemdatabase>
    <table>query_logtable>
    <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 30 dayengine>
    <flush_interval_milliseconds>7500flush_interval_milliseconds>
query_log>

你可能感兴趣的:(ClickHouse,数据库,database,数据库)