docker run方式安装
创建目录
mkdir clickhouse
cd clickhouse
mkdir data
mkdir log
启动容器
docker run -d --name clickhouse -p 18123:8123 -p19000:9000 --ulimit nofile=262144:262144 -v data:/var/lib/clickhouse/ -v log:/var/log/clickhouse-server/ -e CLICKHOUSE_USER=default -e CLICKHOUSE_PASSWORD=my_password clickhouse/clickhouse-server
额外参数
-v config.xml:/etc/clickhouse-server/config.xml
-v users.xml:/etc/clickhouse-server/users.d/users.xml
docker-compose 方式安装
创建必要的目录
cd /data/
mkdir clickhouse
cd clickhouse
mkdir data
mkdir config
获取配置文件
使用docker run的方式启动,进入容器,获取
/etc/clickhouse-server/config.xml
/etc/clickhouse-server/users.xml
将这几个文件从容器内复制出来
docker cp clickhouse:/etc/clickhouse-server/config.xml .
docker cp clickhouse:/etc/clickhouse-server/users.xml .
修改用户名和密码
cd config
拷贝users.xml到config目录下
修改中default的密码
修改集群配置,增加2分片1副本配置
在config.xml文件,remote_servers节点下,增加如下配置
<clickhouse_cluster>
<shard>
<replica>
<host>192.168.1.1</host>
<port>19000</port>
<user>default</user>
<password>password</password>
</replica>
</shard>
<shard>
<replica>
<host>192.168.1.2</host>
<port>19000</port>
<user>default</user>
<password>password</password>
</replica>
</shard>
</clickhouse_cluster>
添加docker-compose.yml文件
version: '3'
services:
clickhouse_server:
image: clickhouse/clickhouse-server:24.2.2.71
container_name: "clickhouse_server"
network_mode: bridge
restart: always
ports:
- 18123:8123
- 19000:9000
environment:
- "LANG=en_US.UTF-8"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/hosts:/etc/hosts:ro
- ./config/config.xml:/etc/clickhouse-server/config.xml
- ./config/users.xml:/etc/clickhouse-server/users.xml
- ./data:/var/lib/clickhouse/
- ./log:/var/log/clickhouse-server/
ulimits:
nofile:
soft: 262144
hard: 262144
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
启动
docker-compose up [-d]
测试
分别给2个节点的库,创建本地表、分布式表(view)
CREATE TABLE distribute_test_local
(
name String,
age Int16,
weight Float32
)
Engine=MergeTree()
ORDER BY name;
CREATE TABLE distribute_test_all AS distribute_test_local
ENGINE = Distributed(clickhouse_cluster, default, distribute_test_local, rand());
插入数据
insert into distribute_test_all values('1bc', 11, 11.3);
insert into distribute_test_all values('2bc', 11, 11.3);
insert into distribute_test_all values('3bc', 11, 11.3);
insert into distribute_test_all values('4bc', 11, 11.3);
查看2个节点的本地表,都有一半的数据.
查看2个节点的分布式表,都有全部的数据。