当前位置: 首页 > news >正文

ClickHouse 日常运维命令总结


一、性能监控与SQL优化

1. 定位高CPU消耗SQL

WITH (SELECT sum(ProfileEvents['OSCPUVirtualTimeMicroseconds']) FROM clusterAllReplicas('cluster_name', system.query_log) WHERE event_time > now() - INTERVAL 10 MINUTE) AS total_cpu
SELECT normalized_query_hash,any(query) AS sample_query,sum(ProfileEvents['OSCPUVirtualTimeMicroseconds']) AS cpu_microseconds,round(cpu_microseconds / total_cpu * 100, 2) AS cpu_percent
FROM clusterAllReplicas('cluster_name', system.query_log)
WHERE event_time > now() - INTERVAL 10 MINUTE
GROUP BY normalized_query_hash
ORDER BY cpu_microseconds DESC
LIMIT 10
SETTINGS max_threads=2;

2. 分析执行计划

EXPLAIN indexes=1
SELECT * FROM table WHERE date = today();

二、进程与任务管理

1. 终止长时间查询

-- 查找耗时查询
SELECT query_id, elapsed, query 
FROM system.processes 
WHERE elapsed > 300; -- 超过300秒-- 终止指定查询
KILL QUERY WHERE query_id = 'query_id';

2. 终止异步Mutation

-- 定位Mutation任务
SELECT database, table, mutation_id 
FROM system.mutations 
WHERE is_done=0;-- 终止Mutation
KILL MUTATION WHERE database='db' AND table='tbl' AND mutation_id='mutation_id';

三、资源与存储管理

1. 账号资源限制

-- 限制最大线程数
CREATE SETTINGS PROFILE max_threads_profile 
SETTINGS max_threads = 10 TO ALL;-- 限制单查询超时
CREATE SETTINGS PROFILE timeout_profile 
SETTINGS max_execution_time = 600 TO user_A;

2. 查看表存储详情

SELECT database,table,formatReadableSize(sum(bytes)) AS size,formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed,sum(data_compressed_bytes) / sum(data_uncompressed_bytes) AS compress_ratio
FROM system.parts
WHERE active
GROUP BY database, table;

四、集群运维操作

1. 启停Merge操作

-- 暂停Merge(紧急维护)
ALTER TABLE tbl ON CLUSTER cluster MODIFY SETTING max_replicated_merges_in_queue=0,max_bytes_to_merge_at_max_space_in_pool=0;-- 恢复Merge(默认值参考官方文档)
ALTER TABLE tbl ON CLUSTER cluster RESET SETTING max_replicated_merges_in_queue,max_bytes_to_merge_at_max_space_in_pool;

2. 集群间数据迁移

INSERT INTO target_db.table
SELECT * FROM remote('source_host:port', 'source_db', 'table', 'user', 'pass');

五、备份与恢复

1. OSS备份与恢复

-- 全表备份
BACKUP TABLE db.table TO S3('https://oss-endpoint', 'access_key', 'secret_key');-- 分区恢复(跳过空表校验)
RESTORE TABLE db.table FROM S3('https://oss-endpoint', 'access_key', 'secret_key')
SETTINGS allow_non_empty_tables=1;

重要提示:备份/恢复仅针对本地表,分布式表需单独重建


六、故障集群修复指南

1. Zookeeper元数据损坏

# 停止所有CH节点
sudo systemctl stop clickhouse-server# 清空元数据缓存(所有节点)
rm -rf /var/lib/clickhouse/metadata/*# 从健康节点复制元数据
scp root@healthy_node:/var/lib/clickhouse/metadata/* /var/lib/clickhouse/metadata/# 重启集群并校验
sudo systemctl start clickhouse-server

2. 副本数据不同步

-- 检查副本状态
SELECT database, table, is_leader, is_readonly 
FROM system.replicas 
WHERE is_session_expired=1;-- 强制恢复副本
SYSTEM RESTART REPLICA db.table;  -- 单表恢复
SYSTEM RESTART REPLICAS;          -- 当前节点所有副本

3. 副本丢失后的重建

-- 1. 停止写入(避免新数据干扰)
ALTER TABLE db.table FREEZE;-- 2. 删除损坏副本数据
rm -rf /var/lib/clickhouse/data/db/table/replica_name-- 3. 从健康副本同步
CREATE TABLE db.table_replica AS db.table 
ENGINE = ReplicatedMergeTree(...)
SETTINGS clean_deleted_rows_after_merge=0,  -- 保留删除标记allow_remote_fs_zero_copy_replication=1;-- 4. 数据校验完成后切换流量

4. 磁盘空间耗尽紧急处理

-- 立即释放未完成Mutation
SYSTEM FLUSH LOGS;  -- 强制写入系统日志
SYSTEM STOP MERGES; -- 暂停后台合并-- 清理突变残留文件
ALTER TABLE db.table 
DELETE WHERE 1=1 SETTINGS mutations_sync=0; -- 异步删除

七、高级运维技巧

  1. TTL数据生命周期管理
CREATE TABLE event_log (id UUID,event_time DateTime,data String
) ENGINE = MergeTree()
ORDER BY event_time
TTL event_time + INTERVAL 3 MONTH;  -- 自动清理3月前数据
  1. 跨引擎数据访问
-- 创建MySQL外表
CREATE TABLE mysql_external (id Int32,name String
) ENGINE = MySQL('mysql-host:3306', 'db', 'table', 'user', 'pass');

运维建议

  • 定期监控system.metrics/system.events
  • 启用query_log并保留7天以上日志
  • 重大操作前执行SYSTEM FLUSH LOGS确保日志落盘
  • 集群扩容后使用SYSTEM RELOAD CONFIG动态加载配置

本文命令基于ClickHouse 22.8+版本验证,执行高危操作前务必进行备份!

http://www.dtcms.com/a/332026.html

相关文章:

  • 并发编程原理与实战(二十三)StampedLock应用实战与其他锁性能对比分析
  • CentOS7系统负载异常飙高全链路分析详细指南
  • Kaggle赛题分析1:Elo用户忠诚度评分预测(2)-特征工程与模型训练
  • 解决Python环境混乱问题
  • 【159页PPT】智慧方案企业数字化转型流程体系建设与运营方案(附下载方式)
  • 鸿蒙应用开发实战:模块内页面路由与Navigation导航详解
  • 深入理解提示词工程:从入门到精通的AI对话艺术
  • 零基础-动手学深度学习-10.3. 注意力评分函数
  • [vibe coding-lovable]lovable是不是ai界的复制忍者卡卡西?
  • 《零基础入门AI:深度学习中的视觉处理(卷积神经网络(CNN)进阶)》
  • 光猫 SK-D840N 获取管理员密码和登录Telnet简记
  • 如何永久修改开发板的时间(重启开发板也不会失效)
  • 深度学习-卷积神经网络CNN-膨胀卷积、可分离卷积(空间可分离、深度可分离)、分组卷积
  • 从红警中来学习工厂方法 vs. 抽象工厂
  • C# 异步编程:提高应用程序效率的关键
  • A股大盘数据-20250814 分析
  • mysql如何降级
  • IDEA 插件 Trae AI 全攻略
  • 20道前端性能优化面试题精华
  • 数仓分层架构设计全解析:从理论到实践的深度思考
  • 多模态大模型技术框架汇总
  • cursor中的设置C++无法跳转
  • CMake中add_definitions()的使用指南
  • geoserver sql视图调用Postgis自定义函数问题记录
  • 五种IO模型与非阻塞IO
  • 双椒派E2000D网络故障排查指南
  • T05_卷积神经网络
  • 许政南辅警---辅警面试等待2小时,面试十分钟
  • 什么是主成分分析(PCA)和数据降维
  • 【22-决策树】