You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用ClickHouse系统数据库日志?已尝试多种方法无效

ClickHouse系统数据库日志(trace_log/part_log)空间占用解决方法

你之前的操作都是针对**查询日志(query_log)**的配置,而问题核心是trace_log和part_log这两张系统日志表,需要单独配置禁用或调整保留策略:

一、直接禁用指定系统日志表

修改ClickHouse主配置文件/etc/clickhouse-server/config.xml,添加以下配置:

  1. 禁用trace_log
<trace_log>
    <enabled>false</enabled>
</trace_log>
  1. 禁用part_log
<part_log>
    <enabled>false</enabled>
</part_log>

修改完成后重启ClickHouse服务:

sudo systemctl restart clickhouse-server

二、调整日志保留策略(不完全禁用)

如果需要保留部分日志用于排查问题,可设置自动清理过期数据:

  1. 配置trace_log的自动清理(保留7天数据,可自行调整天数)
<trace_log>
    <database>system</database>
    <table>trace_log</table>
    <retention_days>7</retention_days>
</trace_log>
  1. 配置part_log的自动清理
<part_log>
    <database>system</database>
    <table>part_log</table>
    <retention_days>7</retention_days>
</part_log>

重启服务后,ClickHouse会自动清理超过保留天数的日志。

三、补充说明

  • log_queries配置仅控制query_log生成,与trace_log/part_log无关,因此之前的设置无效;<logger>节点是控制服务端文件日志(如/var/log/clickhouse-server/下的日志),不影响system库内的日志表。
  • 若配置修改后未生效,可先验证配置文件语法:
clickhouse-server --config-file /etc/clickhouse-server/config.xml --validate-config
  • 已占用的磁盘空间需手动清理,执行以下SQL(低峰期操作):
-- 删除trace_log中30天前的数据
ALTER TABLE system.trace_log DELETE WHERE event_time < now() - INTERVAL 30 DAY;
-- 删除part_log中30天前的数据
ALTER TABLE system.part_log DELETE WHERE event_time < now() - INTERVAL 30 DAY;

清理后可执行OPTIMIZE TABLE system.trace_log FINAL;和OPTIMIZE TABLE system.part_log FINAL;强制释放空间(此操作会占用系统资源)。

内容的提问来源于stack exchange,提问作者Sardar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:55:19