更新时间:2026-08-25 GMT+08:00
分享

收集ClickHouse系统表转储日志

操作场景

在日常使用ClickHouse时,如果出现一些异常故障,需要紧急重启恢复业务,在紧急重启之前,需要及时转储ClickHouse各系统表状态信息,用于问题定位,提升ClickHouse问题定位的效率。

当ClickHouse出现查询超时、节点异常、数据同步失败等故障且需要紧急重启恢复时,重启操作会清除内存中的运行状态数据。因此在重启前必须先转储系统表信息,以便在重启后通过分析转储日志定位故障根因,避免因重启丢失关键诊断数据。

针对不同的系统表日志可以分为实时转储和一键转储,如下表所示:

系统表转储日志

系统表

实时转储系统表日志

  • system.asynchronous_metrics
  • system.clusters
  • system.distribution_queue
  • system.events
  • system.grants
  • system.mutations
  • system.processes
  • system.metrics
  • system.part_moves_between_shards
  • system.replicas
  • system.replicated_fetches
  • system.replication_queue

一键转储系统表日志

  • system.distributed_ddl_queue
  • system.errors
  • system.parts
  • system.parts_columns
  • system.query_log
  • system.query_thread_log
  • system.trace_log

约束与限制

本章节仅适用于MRS 3.3.0-LTS及之后版本。

收集实时转储系统表日志

  1. 登录FusionInsight Manager页面,选择“运维 > 日志 > 下载”,在“服务”勾选“ClickHouseSystemTableDump”。

  2. 在“主机”中勾选需要获取的主机信息,单击“确定”。

  3. 单击右上角的时间编辑按钮,设置日志收集的“开始时间”和“结束时间”。

    收集异常故障日志时间长短可以咨询技术支持人员。

  4. 单击“下载”,实时转储的系统表会被保存在本地。
  5. 验证方法:下载完成后,解压日志包,检查是否包含system.asynchronous_metrics、system.clusters等系统表的转储日志文件。如果日志文件存在且包含故障时间段内的数据,说明实时转储日志收集成功。

收集一键转储系统表日志

  1. 使用root用户后台登录任一ClickHouseServer节点,进入到sbin目录下。

    cd ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/*_*_ClickHouseServer/install/clickhouse/sbin

  2. 执行如下命令获取转储日志:

    ./clickhouse_systemtable_dump.sh 1 "收集开始时间" "收集结束时间"

    例如:

    ./clickhouse_systemtable_dump.sh 1 "2023-08-04 12:00:00" "2023-08-04 16:37:20"

  3. 进入“/var/log/Bigdata/clickhouse/systemTableDump/oneclickTable”目录,查看一键转储压缩日志。

  4. 验证方法:进入输出目录后,检查是否生成了以时间戳命名的.tar.gz压缩文件。使用tar -zxvf <文件名>解压后,确认包含system.errors、system.parts等系统表的转储数据文件。如果文件存在且数据内容覆盖了指定的时间范围,说明一键转储成功。

相关文档

常见问题

Q:一键转储时提示“No data found in the specified time range”如何处理?

A:请检查开始时间和结束时间是否在系统表日志的保留周期内。系统表日志默认保留时间有限,若时间范围过早,可能已被清理。建议适当缩小时间范围或联系技术支持确认日志保留策略。

Q:转储日志文件过大如何处理?

A:转储日志大小与系统表数据量和时间范围成正比。建议缩小时间范围后重新收集,或将大文件分批次下载。如需分析超大日志文件,可使用grep、awk等工具过滤关键信息。

相关文档