ClickHouse

概述

参考:

存算分离,查询性能过剩

https://clickhouse.com/docs/en/guides/sre/network-ports

端口号描述
2181ZooKeeper default service port. Note: see 9181 for ClickHouse Keeper
8123HTTP default port
8443HTTP SSL/TLS default port
9000原生协议端口(也称为 ClickHouse TCP 协议)。由 ClickHouse 生态的应用程序和进程使用(e.g. 各种语言利用 SDK 编写的程序、clickhouse-client 等自带程序、etc.)。也用于分布式查询的内部服务器之间的通信。
9440与 9000 的功能相同,但是带有 SSL/TLS
9004MySQL emulation port
9005PostgreSQL emulation port (also used for secure communication if SSL is enabled for ClickHouse).
9009Inter-server communication port for low-level data access. Used for data exchange, replication, and inter-server communication.
9010SSL/TLS for inter-server communications
9011Native protocol PROXYv1 protocol port
9019JDBC bridge
9100gRPC port
9181Recommended ClickHouse Keeper port
9234Recommended ClickHouse Keeper Raft port (also used for secure communication if <secure>1</secure> enabled)
9363在 /metrics 路径下暴露 Prometheus 格式的 Metric 指标
9281Recommended Secure SSL ClickHouse Keeper port
42000Graphite default port

学习资料

B 站 - 蜂蜜柠檬水HLN,带你快速认识 ClickHouse 数据库 | 了解 OLTP 与 OLAP

Engine

Engine(引擎) 是 ClickHouse 实现数据处理功能的核心抽象。数据库 以及 表 都由各种各样的 Engine 实现

  • Database Engine(数据库引擎)
  • Table Engine(表引擎)

关联文件与配置

https://clickhouse.com/docs/en/operations/configuration-files

https://clickhouse.com/docs/en/operations/settings

/etc/clickhouse-server/

  • ./config.xml # ClickHouse Server 运行配置。
  • ./config.d/ # 配置文件可以拆分到该目录,程序运行时会将该目录下的文件合并到 config.xml 主配置文件
  • ./metrika.xml # 默认的 include_from 文件。该文件中的配置用来替换主配置文件 config.xml 中的配置。
    • e.g. config.xml 中有 <remote_servers incl="clickhouse_remote_server"/>,那么 metrika.xml 中的 <clickhouse_remote_servers> 部分配置就会作为 config.xml 中的 remote_servers。
  • ./users.xml # e.g. 认证信息、etc. 相关配置
  • ./users.d/ # 配置文件可以拆分到该目录,程序运行时会将该目录下的文件合并到 users.xml 主配置文件

ClickHouse 部署

https://clickhouse.com/docs/en/install

CLI

https://clickhouse.com/docs/en/operations/utilities

clickhouse-server

clickhouse-client

https://clickhouse.com/docs/en/integrations/sql-clients/cli

  • clickhouse-client -u default –password 12345678  -m -n –port 9000 -h 127.0.0.1 -d my_database

ClickHouse 生态

参考:

Grafana 数据源插件 https://github.com/grafana/clickhouse-datasource 。详见 Grafana Plugins

https://github.com/clickvisual/clickvisual 一个基于 clickhouse 构建的轻量级日志分析和数据可视化 Web 平台。

https://github.com/metrico/promcasa 通过 ClickHouse 的 SQL,将查询结果转为 OpenMetrics 格式数据。

驱动与接口

https://clickhouse.com/docs/en/interfaces/overview

可视化接口

Cluster

参考:

Shard # 数据的分片

Replica # 每个分片的副本

ClickHouseKeeper # ClickHouse 集群的协调系统,通知 Shard 的副本关于状态变化,使用 RAFT 共识算法实现。ClickHouseKeeper 必须单数节点,最少 3 个来保证选举。

  • ClickHouseKeeper 的逻辑也在 ClickHouse 程序的逻辑中,所以可以有两种运行方式
    • 与 ClickHouse 一起运行,作为其内部逻辑
    • 独立运行

image.png

比如

通过如下 SQL 可以查看集群的拓扑结构:

SELECT cluster, shard_num, replica_num, host_name, port
FROM system.clusters;

结果像这样

clustershard_numreplica_numhost_nameport
my_cluster11host19000
my_cluster12host29000
my_cluster21host39000
my_cluster22host49000

这种结果的配置来源于下面这种配置:

<remote_servers>
  <my_cluster>
    <shard>
      <replica>
        <host>host1</host>
        <port>9000</port>
      </replica>
      <replica>
        <host>host3</host>
        <port>9000</port>
      </replica>
    </shard>
    <shard>
      <replica>
        <host>host2</host>
        <port>9000</port>
      </replica>
      <replica>
        <host>host4</host>
        <port>9000</port>
      </replica>
    </shard>
  </my_cluster>
</remote_servers>

这个集群共两个分片,将数据分别保存在 host1/host3 和 host2/host4 上,每个分片都有一个自己的备份


最后修改 March 28, 2025: clearup ansible and clickhouse (44fca9e5)