服务器ClickHouse教程:从零安装到建表查询全流程
ClickHouse 是一款开源的列式数据库管理系统,主要用于在线分析处理(OLAP)场景,能够对海量数据进行极速查询。
如果你正准备在服务器上部署一套 ClickHouse,但不确定从何入手,下面这套流程可以帮你从零完成安装、启动、建表到基础查询的完整闭环。
本文以 Ubuntu 22.04 和 CentOS 7 为例,其他 Linux 发行版操作类似,主要差异在于包管理命令。
部署前需要确认的几件事
ClickHouse 对系统资源有一定要求,官方建议至少 4GB 内存,但测试环境 2GB 也能跑起来。
开始之前,请通过 SSH 登录服务器,并确认以下条件:
- 操作系统:Ubuntu 20.04/22.04、CentOS 7/8、Debian 10+ 等主流版本均可,本文演示 Ubuntu 22.04。
- 权限:拥有
sudo或root权限,因为需要安装软件包和修改系统配置。 - 网络:服务器能访问外网,以便添加官方软件源并下载安装包。
- 端口:默认会用到
8123(HTTP 接口)和9000(TCP 接口),确保防火墙未拦截,或者稍后按需放行。
先用一条命令确认系统版本和架构:
lsb_release -a
uname -m
输出应显示 x86_64 架构,ClickHouse 对 ARM 的支持也在逐步完善,但本文以 x86_64 为主。
在 Ubuntu 上安装 ClickHouse 服务
ClickHouse 官方提供了 apt 和 yum 仓库,推荐直接通过包管理器安装,便于后续升级。
添加官方 GPG 密钥和软件源
依次执行以下命令,将 ClickHouse 仓库添加到系统:
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
如果 apt-key 提示弃用,不影响本次安装,继续执行即可。
安装 server 和 client 软件包
sudo apt-get install -y clickhouse-server clickhouse-client
安装过程中会提示设置默认用户密码,可以留空直接回车,后续再通过配置文件修改。
安装完成后,ClickHouse 会自动创建 clickhouse 系统用户和必要的目录。
启动服务并设置开机自启
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
检查服务状态:
sudo systemctl status clickhouse-server
看到 active (running) 即表示启动成功。
如果启动失败,可以用 journalctl -u clickhouse-server -n 50 查看最近 50 行日志,常见原因是端口被占用或配置文件语法错误。
连接与基础操作
ClickHouse 安装后自带命令行客户端 clickhouse-client,默认连接本机 9000 端口。
本地连接测试
clickhouse-client
如果安装时设置了密码,需要用 clickhouse-client --password 输入密码。
连接成功后会显示 :) 提示符。
创建数据库和表
ClickHouse 支持标准 SQL 语法,但建表时需要指定引擎。
对于大多数场景,MergeTree 系列引擎是首选。
CREATE DATABASE IF NOT EXISTS demo;
CREATE TABLE demo.logs (
event_time DateTime,
level String,
message String
) ENGINE = MergeTree()
ORDER BY event_time;
ORDER BY 决定了数据在磁盘上的排序方式,对查询性能影响很大,通常选择查询中常用的过滤字段。
插入与查询数据
INSERT INTO demo.logs VALUES (now(), 'INFO', 'service started');
INSERT INTO demo.logs VALUES (now(), 'ERROR', 'connection timeout');
SELECT * FROM demo.logs WHERE level = 'ERROR';
查询结果会以表格形式返回。
ClickHouse 的查询速度在数据量增大后优势更明显,可以尝试插入更多数据后再执行聚合查询。
安全与远程访问配置
默认情况下,ClickHouse 只监听本地地址,且 default 用户没有密码。
如果需要在其他机器上连接,必须修改配置。
允许远程连接
编辑配置文件 /etc/clickhouse-server/config.xml,找到 部分,将 :: 或 0.0.0.0 取消注释:
0.0.0.0
保存后重启服务:
sudo systemctl restart clickhouse-server
同时确认服务器防火墙放行了 9000 和 8123 端口。
如果使用云服务器,还需在安全组中添加入站规则。
设置用户密码
编辑 /etc/clickhouse-server/users.xml,在 下找到 default 用户,添加 标签:
你的强密码
修改后重启服务,之后连接就需要提供密码。
生产环境建议创建独立用户并限制权限,不要长期使用 default 用户。
常见问题与避坑要点
启动时报错“Address already in use”:说明 9000 或 8123 端口被其他程序占用。
用 ss -tlnp | grep 9000 查看占用进程,停止冲突服务或修改 ClickHouse 监听端口。
内存不足导致查询被终止:
ClickHouse 默认会尽量使用可用内存,
如果服务器内存较小,
可以在 users.xml 中设置 max_memory_usage 限制单个查询的内存上限,
例如 10000000000(约 10GB)。
插入数据后查询不到:检查 INSERT 是否成功执行,以及查询条件是否与数据匹配。
MergeTree 引擎的数据写入后会有短暂合并过程,但通常立即可查。
远程连接被拒绝:依次检查 listen_host 配置、防火墙规则、云服务器安全组,以及用户是否允许从远程地址访问(users.xml 中的 networks 配置)。
升级注意事项:通过包管理器升级 ClickHouse 通常比较平滑,但跨大版本升级前建议先备份数据目录 /var/lib/clickhouse/,并查阅对应版本的发布说明。
完成以上步骤后,你已经拥有一个可用的 ClickHouse 单机实例。
后续可以根据数据量增长情况,进一步了解分布式表、副本和分片配置。
如果只是用于测试或学习,当前配置已经足够;
如果准备承载生产流量,务必先设置好密码、限制远程访问来源,并规划好备份策略。