ClickHouse安装 docker方式、docker-compose方式、2分片1副本集群

491 阅读1分钟

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个节点的分布式表,都有全部的数据。