作者:吴帆 青云数据库团队成员
主要负责维护 MySQL 及 ClickHouse 产品开发,擅长故障分析,性能优化。
在多副本分布式 ClickHouse 集群中,通常需要使用 Distributed 表写入或读取数据,Distributed 表引擎自身不存储任何数据,它能够作为分布式表的一层透明代理,在集群内部自动开展数据的写入、分发、查询、路由等工作。
Distributed 表实现副本数据同步有两种方案:
- Distributed + MergeTree
- Distributed + ReplicateMergeTree
| Distributed + MergeTree
在使用这种方案时 internal_replication 需要设为 false,向 Distributed 表写入数据,Distributed 表会将数据写入集群内的每个副本。Distributed 节点需要负责所有分片和副本的数据写入工作。
1. 集群配置
<logical_consistency_cluster><shard><internal_replication>false</internal_replication><replica><host>shard1-repl1</host><port>9000</port></replica><replica><host>shard1-repl2</host><port>9000</port></replica></shard>
</logical_consistency_cluster>
2. 数据写入
CREATE TABLE test.t_local on cluster logical_consistency_cluster
(EventDate DateTime,CounterID UInt32,UserI