第二章:安装与配置¶
Docker 部署¶
单机部署¶
# 启动 ClickHouse
docker run -d --name clickhouse-server \
-p 8123:8123 \
-p 9000:9000 \
-v /path/to/data:/var/lib/clickhouse \
-v /path/to/config:/etc/clickhouse-server \
clickhouse/clickhouse-server:23.8
Docker Compose 部署¶
version: '3.8'
services:
clickhouse-server:
image: clickhouse/clickhouse-server:23.8
container_name: clickhouse-server
ports:
- 8123:8123 # HTTP 接口
- 9000:9000 # Native 接口
volumes:
- ./data:/var/lib/clickhouse
- ./config:/etc/clickhouse-server
- ./logs:/var/log/clickhouse-server
environment:
- CLICKHOUSE_DB=default
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=password
ulimits:
nofile:
soft: 262144
hard: 262144
clickhouse-client:
image: clickhouse/clickhouse-client:23.8
container_name: clickhouse-client
depends_on:
- clickhouse-server
entrypoint:
- /bin/sleep
command:
- infinity
Linux 安装¶
Ubuntu/Debian¶
# 添加仓库
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
sudo apt-get install -y clickhouse-server clickhouse-client
# 启动服务
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
CentOS/RHEL¶
# 添加仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
# 安装
sudo yum install -y clickhouse-server clickhouse-client
# 启动服务
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
配置文件¶
config.xml¶
<clickhouse>
<!-- 监听地址 -->
<listen_host>0.0.0.0</listen_host>
<!-- HTTP 端口 -->
<http_port>8123</http_port>
<!-- Native 端口 -->
<tcp_port>9000</tcp_port>
<!-- 数据目录 -->
<path>/var/lib/clickhouse/</path>
<!-- 临时目录 -->
<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
<!-- 日志配置 -->
<logger>
<level>information</level>
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
<size>1000M</size>
<count>10</count>
</logger>
<!-- 内存限制 -->
<max_memory_usage>10000000000</max_memory_usage>
<!-- 并发限制 -->
<max_connections>4096</max_connections>
<max_concurrent_queries>100</max_concurrent_queries>
<!-- 用户配置 -->
<users_config>users.xml</users_config>
</clickhouse>
users.xml¶
<clickhouse>
<profiles>
<default>
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</default>
<readonly>
<readonly>1</readonly>
</readonly>
</profiles>
<users>
<default>
<password></password>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
<admin>
<password_sha256_hex>...</password_sha256_hex>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</admin>
</users>
<quotas>
<default>
<interval>
<duration>3600</duration>
<queries>0</queries>
<errors>0</errors>
<result_rows>0</result_rows>
<read_rows>0</read_rows>
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
</clickhouse>
客户端连接¶
命令行客户端¶
# 连接本地服务器
clickhouse-client
# 指定主机和端口
clickhouse-client --host localhost --port 9000
# 指定用户和密码
clickhouse-client --user default --password
# 执行 SQL 文件
clickhouse-client < queries.sql
HTTP 接口¶
# 查询
curl 'http://localhost:8123/' --data-binary 'SELECT 1'
# 指定格式
curl 'http://localhost:8123/?query=SELECT+1+FORMAT+JSON'
# 插入数据
curl 'http://localhost:8123/?query=INSERT+INTO+table+FORMAT+CSV' --data-binary @data.csv
Python 客户端¶
from clickhouse_driver import Client
client = Client('localhost')
# 查询
result = client.execute('SELECT 1')
print(result)
# 插入
client.execute(
'INSERT INTO table (id, name) VALUES',
[(1, 'Alice'), (2, 'Bob')]
)
小结¶
安装配置要点:
- Docker 部署:快速启动,适合开发测试
- Linux 安装:生产环境推荐
- 配置文件:端口、内存、用户
- 客户端连接:命令行、HTTP、Python
下一章我们将学习数据类型。