我的docker随笔40:clickhouse服务部署

本文介绍 clickhouse 数据库的容器化部署。

起因

某项目需生产环境数据库,因数量太大,较耗时。经询问得知生产环境中有个 clickhouse 数据库,于是抽时间用 docker 部署,一方面是不想落后于人,要学习新技术;另一方面是为了方便外网调试。

服务端部署

下载镜像

dockerhub上有许多clickhouse的镜像,这里选择较流行的,由于生产环境的版本是21.9,因此下载相近的版本。

docker pull yandex/clickhouse-server:21.9.6   # 很久未更新 只有x86版本

docker pull clickhouse/clickhouse-server:21.9.6  # 更新,在x86和arm版本

准备配置文件

启动容器,用挂载方式,从容器拷贝指定文件。操作过程如下:

docker run --rm -it -v /tmp/config:/tmp/config --rm --name click yandex/clickhouse-server:21.9.6 bash

cd /tmp/config/
cp /etc/clickhouse-server/users.xml .
cp /etc/clickhouse-server/config.d/docker_related_config.xml .
cp /etc/clickhouse-server/config.xml .

exit

配置文件在主机目录/tmp/config中,将其拷贝到某工程目录,假定。修改配置,如下:

./config/docker_related_config.xml, L3 关闭监听地址 
<!-- <listen_host>::</listen_host> -->

./config/config.xml, L159 打开监听地址
<listen_host>0.0.0.0</listen_host>

./config/users.xml,L68 添加default用户密码,可不加密码,也可添加另外的用户名

服务脚本

docker-compose.yaml文件:

version: '3.8'
services:
  clickhouse:
    image: yandex/clickhouse-server:21.9.6
    container_name: clickhouse
    ports:
      - "9999:8123"
      #- "9000:9000"
    volumes:
      # 默认配置
      - ./config/docker_related_config.xml:/etc/clickhouse-server/config.d/docker_related_config.xml
      - ./config/config.xml:/etc/clickhouse-server/config.xml
      - ./config/users.xml:/etc/clickhouse-server/users.xml
      - /etc/localtime:/etc/localtime
      # 运行日志
      - ./log:/var/log/clickhouse-server
      # 数据持久
      - ./data:/var/lib/clickhouse
    networks:
      - my-net

networks:
  my-net:

启动:

docker-compose up -d

说明:clickhouse提供http和tcp两种接口,前者端口默认为8123,后者默认为9000。按需要暴露端口即可。

客户端使用

客户端使用DBeaver图形化工具。

下载及安装

略。

安装驱动

双击DBeaver图标,默认情况下,未安装连接数据库。需要自己连接某种数据库,由该工具再下载。此处列出clickhouse的连接过程。

扫描二维码关注公众号,回复: 16973316 查看本文章
latelee.cn 9999
default 密码为123456

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建数据表:

create database if not exists testUSER;
DROP TABLE if exists testUSER.test_user;

CREATE TABLE if not exists default.userinfo (
`id` Nullable(String),
`age` Nullable(Int64),
`name` Nullable(String)
) ENGINE = Memory

insert into default.userinfo(id, age, name) values('001', 250,'latelee');
insert into default.userinfo(id, age, name) values('002', 252,'latelee2');
insert into default.userinfo(id, age, name) values('003', 253,'latelee3');
insert into default.userinfo(id, age, name) values('004', 254,'latelee4');
insert into default.userinfo(id, age, name) values('005', 255,'latelee5');

快捷键:

Ctrl+Enter:执行指定的sql语句。

小结

由于有现成的 docker 镜像,因此部署并没有太多困难,只是首次接触,对一些SQL语法不熟悉,导致建表、查询有点耗时。

高阶功能暂未使用到。

语句小结

创建数据库:
create database if not exists userinfo;

本节列出一些错误信息记录。

密码错误:

Code: 516. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (AUTHENTICATION_FAILED) (version 22.1.3.7 (official build))

猜你喜欢

转载自blog.csdn.net/subfate/article/details/129721537