收集ClickHouse系统表转储日志
操作场景
在日常使用ClickHouse时,如果出现一些异常故障,需要紧急重启恢复业务,在紧急重启之前,需要及时转储ClickHouse各系统表状态信息,用于问题定位,提升ClickHouse问题定位的效率。
当ClickHouse出现查询超时、节点异常、数据同步失败等故障且需要紧急重启恢复时,重启操作会清除内存中的运行状态数据。因此在重启前必须先转储系统表信息,以便在重启后通过分析转储日志定位故障根因,避免因重启丢失关键诊断数据。
针对不同的系统表日志可以分为实时转储和一键转储,如下表所示:
| 系统表转储日志 | 系统表 |
|---|---|
| 实时转储系统表日志 |
|
| 一键转储系统表日志 |
|
约束与限制
本章节仅适用于MRS 3.3.0-LTS及之后版本。
收集实时转储系统表日志
- 登录FusionInsight Manager页面,选择“运维 > 日志 > 下载”,在“服务”勾选“ClickHouseSystemTableDump”。

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

- 单击右上角的时间编辑按钮,设置日志收集的“开始时间”和“结束时间”。
收集异常故障日志时间长短可以咨询技术支持人员。
- 单击“下载”,实时转储的系统表会被保存在本地。
- 验证方法:下载完成后,解压日志包,检查是否包含system.asynchronous_metrics、system.clusters等系统表的转储日志文件。如果日志文件存在且包含故障时间段内的数据,说明实时转储日志收集成功。
收集一键转储系统表日志
- 使用root用户后台登录任一ClickHouseServer节点,进入到sbin目录下。
cd ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/*_*_ClickHouseServer/install/clickhouse/sbin - 执行如下命令获取转储日志:
./clickhouse_systemtable_dump.sh 1 "收集开始时间" "收集结束时间"
例如:
./clickhouse_systemtable_dump.sh 1 "2023-08-04 12:00:00" "2023-08-04 16:37:20"
- 进入“/var/log/Bigdata/clickhouse/systemTableDump/oneclickTable”目录,查看一键转储压缩日志。

- 验证方法:进入输出目录后,检查是否生成了以时间戳命名的.tar.gz压缩文件。使用tar -zxvf <文件名>解压后,确认包含system.errors、system.parts等系统表的转储数据文件。如果文件存在且数据内容覆盖了指定的时间范围,说明一键转储成功。
相关文档
- 了解如何安装和使用ClickHouse客户端连接ClickHouse服务,具体请参考ClickHouse客户端使用实践。
- 了解更多ClickHouse用户权限管理(如修改、删除租户等),具体请参考ClickHouse用户权限管理。
- 了解如何对ClickHouse表进行操作,例如创建表、删除表、修改/查询表数据,具体请参考ClickHouse常用SQL语法。
常见问题
Q:一键转储时提示“No data found in the specified time range”如何处理?
A:请检查开始时间和结束时间是否在系统表日志的保留周期内。系统表日志默认保留时间有限,若时间范围过早,可能已被清理。建议适当缩小时间范围或联系技术支持确认日志保留策略。
Q:转储日志文件过大如何处理?
A:转储日志大小与系统表数据量和时间范围成正比。建议缩小时间范围后重新收集,或将大文件分批次下载。如需分析超大日志文件,可使用grep、awk等工具过滤关键信息。