跳转至

第二章:安装与配置

Docker 部署

单机部署

# 启动 ClickHouse
docker run -d --name clickhouse-server \
  -p 8123:8123 \
  -p 9000:9000 \
  -v /path/to/data:/var/lib/clickhouse \
  -v /path/to/config:/etc/clickhouse-server \
  clickhouse/clickhouse-server:23.8

Docker Compose 部署

version: '3.8'

services:
  clickhouse-server:
    image: clickhouse/clickhouse-server:23.8
    container_name: clickhouse-server
    ports:
      - 8123:8123   # HTTP 接口
      - 9000:9000   # Native 接口
    volumes:
      - ./data:/var/lib/clickhouse
      - ./config:/etc/clickhouse-server
      - ./logs:/var/log/clickhouse-server
    environment:
      - CLICKHOUSE_DB=default
      - CLICKHOUSE_USER=default
      - CLICKHOUSE_PASSWORD=password
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

  clickhouse-client:
    image: clickhouse/clickhouse-client:23.8
    container_name: clickhouse-client
    depends_on:
      - clickhouse-server
    entrypoint:
      - /bin/sleep
    command:
      - infinity

Linux 安装

Ubuntu/Debian

# 添加仓库
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754

echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
    /etc/apt/sources.list.d/clickhouse.list

# 安装
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client

# 启动服务
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server

CentOS/RHEL

# 添加仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo

# 安装
sudo yum install -y clickhouse-server clickhouse-client

# 启动服务
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server

配置文件

config.xml

<clickhouse>
    <!-- 监听地址 -->
    <listen_host>0.0.0.0</listen_host>

    <!-- HTTP 端口 -->
    <http_port>8123</http_port>

    <!-- Native 端口 -->
    <tcp_port>9000</tcp_port>

    <!-- 数据目录 -->
    <path>/var/lib/clickhouse/</path>

    <!-- 临时目录 -->
    <tmp_path>/var/lib/clickhouse/tmp/</tmp_path>

    <!-- 日志配置 -->
    <logger>
        <level>information</level>
        <log>/var/log/clickhouse-server/clickhouse-server.log</log>
        <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
        <size>1000M</size>
        <count>10</count>
    </logger>

    <!-- 内存限制 -->
    <max_memory_usage>10000000000</max_memory_usage>

    <!-- 并发限制 -->
    <max_connections>4096</max_connections>
    <max_concurrent_queries>100</max_concurrent_queries>

    <!-- 用户配置 -->
    <users_config>users.xml</users_config>
</clickhouse>

users.xml

<clickhouse>
    <profiles>
        <default>
            <max_memory_usage>10000000000</max_memory_usage>
            <use_uncompressed_cache>0</use_uncompressed_cache>
            <load_balancing>random</load_balancing>
        </default>

        <readonly>
            <readonly>1</readonly>
        </readonly>
    </profiles>

    <users>
        <default>
            <password></password>
            <networks>
                <ip>::/0</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </default>

        <admin>
            <password_sha256_hex>...</password_sha256_hex>
            <networks>
                <ip>::/0</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </admin>
    </users>

    <quotas>
        <default>
            <interval>
                <duration>3600</duration>
                <queries>0</queries>
                <errors>0</errors>
                <result_rows>0</result_rows>
                <read_rows>0</read_rows>
                <execution_time>0</execution_time>
            </interval>
        </default>
    </quotas>
</clickhouse>

客户端连接

命令行客户端

# 连接本地服务器
clickhouse-client

# 指定主机和端口
clickhouse-client --host localhost --port 9000

# 指定用户和密码
clickhouse-client --user default --password

# 执行 SQL 文件
clickhouse-client < queries.sql

HTTP 接口

# 查询
curl 'http://localhost:8123/' --data-binary 'SELECT 1'

# 指定格式
curl 'http://localhost:8123/?query=SELECT+1+FORMAT+JSON'

# 插入数据
curl 'http://localhost:8123/?query=INSERT+INTO+table+FORMAT+CSV' --data-binary @data.csv

Python 客户端

from clickhouse_driver import Client

client = Client('localhost')

# 查询
result = client.execute('SELECT 1')
print(result)

# 插入
client.execute(
    'INSERT INTO table (id, name) VALUES',
    [(1, 'Alice'), (2, 'Bob')]
)

小结

安装配置要点:

  • Docker 部署:快速启动,适合开发测试
  • Linux 安装:生产环境推荐
  • 配置文件:端口、内存、用户
  • 客户端连接:命令行、HTTP、Python

下一章我们将学习数据类型。