Cluster 与 Replication

简介: Cluster 与 Replication

ClickHouse 的集群由分片Shard )组成,而每个分片又通过副本Replica )组成。这种分层的概念,在一些流行的分布式系统中十分普遍。例如,在 Elasticsearch 的概念中,一个索引由分片和副本组成,副本可以看做一种特殊的分片。如果一个索引由 5 个分片组成,副本的基数是 1 ,那么这个索引一共会拥有 10 个分片(每 1 个分片对应 1 个副本)。


但是 ClickHouse 的设计与其完全不同,这里有几个与众不同的特性:

  1. ClickHouse1个节点只能拥有1个分片,也就是说如果要实现1分片、1副本,则至少需要部署2个服务节点。
  2. 分片只是一个逻辑概念,其物理承载还是由副本承担的。


如下所示是一份 ClickHouse 的集群配置示例:

<ch_cluster>
  <shard>
    <replica>
      <host>10.37.129.6</host>
      <port>9000</port>
    </replica>
  </shard>
</ch_cluster>点击复制复制失败已复制


从字面含义理解这份配置的语言,可以理解为自定义集群 ch_cluster 拥有 1shard (分片)和 1replica (副本),且该副本由 10.37.129.6 服务节点承载。


从本质上看,这组 1 分片、 1 副本的配置在 ClickHouse 中只有 1 个物理副本,所以它正确的语义应该是 1 分片、 0 副本。分片更像是逻辑层的分组,在物理存储层则统一使用副本代表分片和副本。所以真正的 1 分片、 1 副本语义的配置,应该改为 1 分片和 2 副本,如下所示:

<ch_cluster>
  <shard>
    <replica>
      <host>10.37.129.6</host>
      <port>9000</port>
    </replica>
    <replica>
      <host>10.37.129.7</host>
      <port>9000</port>
    </replica>
  </shard>
</ch_cluster>
目录
相关文章
|
监控 MySQL 关系型数据库
ProxySQL Cluster 概述
1:前言 在ProxySQL 1.4.2 之前,ProxySQL 单点的解决方法有配合keepalived 使用来实现ProxySQL的主备,但是需要在主备上配置两份完全相同的路由或规则,如果再没有自动运维平台,同时维护两份配置的也是相当麻烦的。
7201 0
|
NoSQL Redis
|
关系型数据库 MySQL 数据库
|
关系型数据库 PostgreSQL
|
关系型数据库 PostgreSQL
|
关系型数据库 MySQL 数据库
|
Web App开发 存储 Apache
|
NoSQL 测试技术 数据库