ClickHouse 分片、 Distributed 表、副本机制
文章目录
- ClickHouse 分片、 Distributed 表、副本机制
-
- 核心概念
- 本地表和分布式命名规范【重要】
- 典型生产架构
- 副本机制
-
- 扩容与再均衡(Rebalance)
- 读写行为
- 分片键设计建议
- 常见问题与排错
ClickHouse 分片、 Distributed 表、副本机制
核心概念
- 分片(Shard):把数据水平切分到多台节点上,每个分片通常包含多台副本(Replica)用于高可用。
- 本地表(Local Table):实际存数据的表,常用 MergeTree/ReplicatedMergeTree 引擎。
- 分布式表(Distributed):一个“路由器”/“代理”,不存储数据本身;读取时把查询分发到各分片并汇总结果;写入时按分片键把数据路由到目标分片。分布式表建表的引擎为Distributed。
- 集群配置(remote_servers):在服务端配置每个分片与副本的拓扑,供 Distributed 引擎以及 cluster()/remote() 函数使用。
本地表和分布式命名规范【重要】
本地表:{business_table}_local
分布式表:{business_table}
看到无后缀即知道是“分布式入口表”,看到 _local 就知道是“实际存储表”。不需要再查引擎或元数据。这样降低误用风险,便于自动化与协作。
降低误操作风险(特别是写入)
- 防止误写本地表:常规写入面向分布式表(无后缀),避免直接写