# 部署
- 架构分为两个模块:
- clickhouse-server :服务器。
- clickhouse-client :客户端。
# 单实例
- 用 docker-compose 部署:
version: "3" services: clickhouse: container_name: clickhouse image: clickhouse/clickhouse-server:24.2 restart: unless-stopped environment: CLICKHOUSE_DB: default CLICKHOUSE_USER: default CLICKHOUSE_PASSWORD: ****** CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 ports: - 8123:8123 - 9000:9000 - 9004:9004 volumes: - /etc/localtime:/etc/localtime:ro - ./config:/etc/clickhouse-server - ./data:/var/lib/clickhouse
- 需要调整挂载目录的权限:
chown -R 101 .
- 需要调整挂载目录的权限:
# 客户端
ClickHouse 默认监听了多个端口,供不同类型的客户端访问:
- 8123 :提供 HTTP API 。访问 /play 页面会显示一个 Web UI ,可执行命令。
- 9000 :采用 TCP 协议,供 clickhouse 原生客户端访问。
- 9004 :采用 TCP 协议,供 MySQL 客户端兼容访问。
例:使用 HTTP API
[root@CentOS]# curl 10.0.0.1:8123 Ok. [root@CentOS]# curl '10.0.0.1:8123/?user=default&password=xxx' -d 'show databases' INFORMATION_SCHEMA default information_schema system
例:使用原生客户端
docker run -it --rm clickhouse/clickhouse-client:24.2 # --host localhost # --port 9000 # --user default # --password '' # --query ''
例:使用 MySQL 客户端
mysql -h 10.0.0.1 -P 9004 -u root -p
# 配置
配置文件采用 XML 或 YAML 格式。
- 根节点都是
<clickhouse>
。
- 根节点都是
config.xml 示例:
<?xml version="1.0"?> <clickhouse> <http_port>8123</http_port> <tcp_port>9000</tcp_port> <mysql_port>9004</mysql_port> <listen_host>127.0.0.1</listen_host> <!-- 默认只允许本机访问 --> </clickhouse>
users.xml 示例:
<?xml version="1.0"?> <clickhouse> <!-- 定义用户 --> <users> <default> <!-- 用户名,默认为 default --> <password></password> <!-- 明文密码,默认为空字符串 --> <!-- 是否允许通过 SQL 配置 ClickHouse 的用户、权限,默认为 0 --> <access_management>0</access_management> <!-- 允许登录的客户端地址,默认为任何地址 --> <networks> <ip>::/0</ip> </networks> <profile>default</profile> <quota>default</quota> </default> </users> <!-- 定义一些配置,可被用户采用 --> <profiles> <default> <max_memory_usage>10000000000</max_memory_usage> <load_balancing>random</load_balancing> </default> <readonly> <readonly>1</readonly> </readonly> </profiles> <!-- 定义一些配额,可被用户采用 --> <quotas> <default> <interval> <!-- 限制用户在 duration 时间内,消耗的 queries 等资源数量,取值为 0 则不限制 --> <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>
也可以用 mysql 客户端登录 ClickHouse ,用 SQL 创建用户:
CREATE USER root@'%' IDENTIFIED WITH PLAINTEXT_PASSWORD BY '******'; GRANT ALL ON *.* TO root WITH GRANT OPTION;
# 集群
- ClickHouse 支持部署多个 server 实例,组成集群。
- 可以连接到 zookeeper ,保证分布式一致性。
- config.xml 中集群的配置示例:
<remote_servers> <cluster1> <!-- 集群名 --> <shard> <!-- 一个分片 --> <replica> <!-- 该分片中的一个副本 --> <host>10.0.0.1</host> <port>9000</port> </replica> <weight>1</weight> <!-- 该分片存储新数据的权重,默认为 1 --> </shard> <shard> <replica> <host>10.0.0.2</host> <port>9000</port> </replica> </shard> </cluster1> </remote_servers>
- 集群中可以划分多个分片,分别存储不同的数据。
- 每个分片可以包含多个副本实例,存储相同的数据。