ClickHouse 是俄罗斯第一大搜索引擎 Yandex 开发的列式储存数据库。
令人惊喜的是,这个列式储存数据库的性能大幅超越了很多商业 MPP 数据库软件。
这个数据库用于数据分析还是香的,其他还有 Doris 等。
本文记录docker-compose快速部署clickhouse。
前提环境
安装docker和docker-compose,看我之前的文章。
部署 Clickhouse 服务
创建相关目录
mkdir -p /mydata/docker-compose/clickhouse
cd /mydata/docker-compose/clickhouse
mkdir data
mkdir log
mkdir config
编写编排文件 docker-compose.yml
version: '3'
services:
clickhouse:
image: yandex/clickhouse-server:22.1.3.7
container_name: clickhouse
restart: always
ports:
- "8123:8123"
- "9000:9000"
volumes:
- /etc/localtime:/etc/localtime:ro
# 运行日志
- ./log:/var/log/clickhouse-server
# 数据持久
- ./data:/var/lib/clickhouse:rw
启动
docker compose up -d
修改 Clickhouse 配置
进入容器查看配置:
docker exec -it clickhouse /bin/bash
clickhouse 默认配置路径是: /etc/clickhouse-server/
ctrl + p + q
退出容器,复制相关文件到到宿主机当前工作目录
docker cp clickhouse:/etc/clickhouse-server/config.xml ./config
docker cp clickhouse:/etc/clickhouse-server/users.xml ./config
docker cp clickhouse:/etc/clickhouse-server/config.d/docker_related_config.xml ./config
修改docker-compose 配置文件
version: '3'
services:
clickhouse:
image: yandex/clickhouse-server:22.1.3.7
container_name: clickhouse
restart: always
ports:
- "8123:8123"
- "9000:9000"
volumes:
# 默认配置
- ./config/docker_related_config.xml:/etc/clickhouse-server/config.d/docker_related_config.xml:rw
- ./config/config.xml:/etc/clickhouse-server/config.xml:rw
- ./config/users.xml:/etc/clickhouse-server/users.xml:rw
- /etc/localtime:/etc/localtime:ro
# 运行日志
- ./log:/var/log/clickhouse-server
# 数据持久
- ./data:/var/lib/clickhouse:rw
关闭监听地址
vim ./config/docker_related_config.xml
<!-- 注掉以下内容 -->
<!-- <listen_host>::</listen_host> -->
打开监听地址
vim ./config/config.xml
搜索 listen_host
<listen_host>0.0.0.0</listen_host>
创建clickhouse用户 (可不创建,不创建默认为default)
查看 ./config/users.xml
文件,在 <users></users>
中加入自定义用户dev
<dev>
<password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<allow_databases>
<database>default</database>
</allow_databases>
</dev>
生成密码(必须进入容器内运行)
docker exec -it clickhouse /bin/bash
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
然后将生成的密码(第二行)替换掉<password_sha256_hex></password_sha256_hex>
中的。
重新启动服务后,用DBeaver连接可成功。
评论区