该文档使用docker
容器化部署clickhouse
集群,通过将相关配置和数据挂载到宿主机的方式进行数据的持久化。示例中集群为两个分片,每个分片两个副本(可根据实际需求进行调整)。
clickhouse 集群规划
IP | layer | shard | replica |
---|---|---|---|
10.100.1.1 | 01 | 01 | 1 |
10.100.1.2 | 01 | 01 | 2 |
10.100.1.3 | 01 | 02 | 1 |
10.100.1.4 | 01 | 02 | 2 |
生成基本的配置,如文件夹和配置文件等
-
创建
clickhouse
所需文件夹,用于存放clickhouse
配置文件和挂载容器数据mkdir -p /opt/clickhouse-server/{ config,data,logs}
目录 作用 容器内目录 config
clickhouse
配置文件/etc/clickhouse-server/ config/config.d
如果需要新增或修改默认配置,可将配置文件添加到config.d目录下,项目启动时会将配置合并。 /etc/clickhouse-server/config.d data
clickhouse
数据文件/var/lib/clickhouse/ logs
clickhouse
日志/var/log/clickhouse-server/ -
启动一个临时容器,复制容器内的默认配置文件到宿主机
# 启动一个临时容器 docker run --name temp-clickhouse -d clickhouse/clickhouse-server:23.1.3.5 # 复制容器内部的配置到宿主机 docker cp temp-clickhouse:/etc/clickhouse-server/ .
-
将第二步中复制出来的
clickhouse
所有配置文件移动到config
目录下mv clickhouse-server/* /opt/clickhouse-server/config/
更改clickhouse
配置
-
更改
config.xml
,-
remote_servers
: 默认的配置文件中存在一些用于演示的集群配置,可以将对应的配置进行注释
-
timezone
更改clickhouse
服务时区到Asia/Shanghai
-
-
在
config.d
目录下新增metrika.xml
配置文件,用于设置集群和zookeeper
相关配置<!-- 以10.100.1.1机器作为示例配置 --> <clickhouse> <!-- remote_servers为集群配置信息,每次更改后可及时生效,无需重启服务器 --> <remote_servers> <cluster_2_shard_2_replicas> <shard> <replica> <!-- host 配置需要注意,如果宿主机未添加集群内其他机器的hostname映射关系,则需要在docker命令中添加, 并且只能使用hostname访问 --> <!-- 如果宿主机添加了host则可以直接使用ip地址进行访问 --> <host>10.100.1.1</host> <port<