ClickHouse 部署指南:列式数据库搭建和使用,分析查询快 100 倍
ClickHouse 部署指南列式数据库搭建和使用分析查询快 100 倍ClickHouse 是 Yandex 开源的列式数据库专为 OLAP在线分析处理场景设计。普通 MySQL 查询一亿条日志需要几分钟ClickHouse 同样的查询可能只需要几秒——它通过列式存储、向量化执行、极致压缩来实现这个速度。适合存储和分析大量时序数据、日志、用户行为数据、监控指标等。ClickHouse vs MySQL场景区别场景推荐数据库用户注册、订单、事务MySQL / PostgreSQL日志分析、用户行为、监控ClickHouse数据量 100 万条MySQL 够用数据量 1000 万条ClickHouse 优势明显服务器配置建议数据量CPU内存硬盘 1 亿行2 核4G100GBSSD1–100 亿行8 核32G1TBClickHouse 对内存和磁盘 IO 要求较高SSD 能显著提升查询速度。我用 雨云服务器 rainyuncom的 4 核 8G SSD 服务器存储网站访问日志每天几百万条记录分析查询响应都在 1 秒以内。新用户注册填优惠码2026off能领 5 折优惠券。安装 ClickHouse方法一官方包推荐sudoaptinstall-yapt-transport-https ca-certificatescurlgnupgcurl-fsSLhttps://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key|sudogpg--dearmor-o/usr/share/keyrings/clickhouse-keyring.gpgechodeb [signed-by/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main|sudotee/etc/apt/sources.list.d/clickhouse.listsudoaptupdatesudoaptinstall-yclickhouse-server clickhouse-clientsudosystemctlenable--nowclickhouse-serversudosystemctl status clickhouse-server方法二Dockerdockerrun-d\--nameclickhouse\-p8123:8123\-p9000:9000\-v/opt/clickhouse/data:/var/lib/clickhouse\-v/opt/clickhouse/logs:/var/log/clickhouse-server\--ulimitnofile262144:262144\clickhouse/clickhouse-server:latest基本配置sudonano/etc/clickhouse-server/users.xml设置默认用户密码生产环境必须设置usersdefault!-- 清空 password 标签改用密码哈希 --password/password!-- 或者使用 SHA256 哈希 --!-- password_sha256_hex哈希值/password_sha256_hex --networksip::1/ipip127.0.0.1/ip!-- 如需远程访问添加允许的 IP --/networksprofiledefault/profilequotadefault/quota/default/users重启服务sudosystemctl restart clickhouse-server连接 ClickHouse# 本地命令行客户端clickhouse-client# 带用户名密码clickhouse-client--userdefault--password你的密码# HTTP 接口也支持curlhttp://localhost:8123/?querySELECTversion()基本操作创建数据库和表-- 创建数据库CREATEDATABASEanalytics;USEanalytics;-- 创建日志表MergeTree 引擎是最常用的CREATETABLEaccess_logs(timestampDateTime,dateDateDEFAULTtoDate(timestamp),ip String,method LowCardinality(String),-- 低基数字段用 LowCardinalitypath String,statusUInt16,bytes UInt64,duration_ms Float32,user_agent String,referer String)ENGINEMergeTree()PARTITIONBYdate-- 按日期分区ORDERBY(timestamp,ip)-- 主键影响查询性能TTLdateINTERVAL90DAY-- 自动删除 90 天前的数据SETTINGS index_granularity8192;插入数据-- 单条插入INSERTINTOaccess_logsVALUES(now(),today(),1.2.3.4,GET,/api/users,200,1024,45.2,Mozilla/5.0,);-- 批量插入推荐ClickHouse 适合大批量写入INSERTINTOaccess_logsSELECT*FROMinput(timestamp DateTime, ip String, ...);查询示例-- 统计今天各 HTTP 状态码数量SELECTstatus,count()AScountFROMaccess_logsWHEREdatetoday()GROUPBYstatusORDERBYcountDESC;-- 最慢的 10 个接口SELECTpath,avg(duration_ms)ASavg_duration,count()ASrequest_countFROMaccess_logsWHEREdatetoday()-7GROUPBYpathORDERBYavg_durationDESCLIMIT10;-- 每小时请求量时序分析SELECTtoStartOfHour(timestamp)AShour,count()ASrequests,sum(bytes)AStotal_bytesFROMaccess_logsWHEREdatetoday()-1GROUPBYhourORDERBYhour;-- IP 排名找高频访问 IPSELECTip,count()AScountFROMaccess_logsWHEREdatetoday()ANDstatus400-- 只看错误请求GROUPBYipORDERBYcountDESCLIMIT20;物化视图预计算聚合-- 创建每分钟统计的物化视图查询速度更快CREATEMATERIALIZEDVIEWaccess_logs_per_minuteENGINESummingMergeTree()ORDERBY(minute,path)ASSELECTtoStartOfMinute(timestamp)ASminute,path,count()ASrequests,sum(bytes)ASbytes,avg(duration_ms)ASavg_durationFROMaccess_logsGROUPBYminute,path;-- 查询物化视图比原表快很多SELECTpath,sum(requests)AStotalFROMaccess_logs_per_minuteWHEREminutenow()-INTERVAL1HOURGROUPBYpathORDERBYtotalDESC;发送 Nginx 日志到 ClickHouse配合 Vector日志收集工具把 Nginx 日志实时写入 ClickHousecurl--protohttps--tlsv1.2-sSfhttps://sh.vector.dev|bashcat/etc/vector/vector.yamlEOF sources: nginx_logs: type: file include: - /var/log/nginx/access.log read_from: end transforms: parse_nginx: type: remap inputs: [nginx_logs] source: | parsed, err parse_nginx_log(.message, combined) if err null { . merge!(., parsed) .timestamp now() } sinks: clickhouse: type: clickhouse inputs: [parse_nginx] endpoint: http://localhost:8123 database: analytics table: access_logs auth: strategy: basic user: default password: 你的密码 EOFsystemctlenable--nowvector配合 Grafana 可视化在 Grafana 里安装 ClickHouse 数据源插件Grafana → Connections → Data Sources → Add → ClickHouse - URL: http://localhost:8123 - 用户名/密码然后可以创建仪表板把 SQL 查询结果可视化为折线图、柱状图等。数据备份# 备份特定表clickhouse-client--querySELECT * FROM analytics.access_logs FORMAT Native|gzip/backup/access_logs-$(date%Y%m%d).bin.gz# 恢复gunzip-c/backup/access_logs-20260427.bin.gz|clickhouse-client--queryINSERT INTO analytics.access_logs FORMAT Native# 使用 clickhouse-backup 工具功能更完整ClickHouse 的价值在于让你可以在大量数据上做实时分析——以前要么用 MySQL 慢查询要么花大钱买数据仓库现在用一台普通云服务器就能搭建一个响应时间以秒计的分析平台。对于有日志分析、用户行为追踪、监控数据存储需求的项目ClickHouse 是性价比最高的选择。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2583410.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!