真实起一个独立的ClickHouse Keeper实例,用system.zookeeper查看一张ReplicatedMergeTree表在Keeper里真实维护的协调信息结构。
代码clickhouse keeper --config-file=keeper_config.xml -- 真实独立进程,跟clickhouse server分开 -- 通过ClickHouse自带的system.zookeeper表查询Keeper里的内容 SELECT name FROM system.zookeeper WHERE path='/clickhouse/tables/1/repl_tbl'; SELECT name, value FROM system.zookeeper WHERE path='/clickhouse/tables/1/repl_tbl/log';
SELECT name FROM system.zookeeper WHERE path='/clickhouse/tables/1/repl_tbl';
→ log 真实的操作日志(每个part的增删都记一条)
replicas 真实注册的副本列表(replica1, replica2)
blocks 真实的去重信息(防止同一条数据被重复插入)
block_numbers 真实的分区级自增块号
mutations 真实的mutation记录
quorum 真实的quorum写入状态
leader_election 真实的leader选举信息
part_moves_shard 分片间part移动记录
pinned_part_uuids ...(共14个真实路径)
SELECT name, value FROM system.zookeeper WHERE path='.../log' LIMIT 1;
→ log-0000000000 "format version: 4\ncreate_time: 2026-09-29 08:48:18\n
source replica: replica1\nblock_id: \nget\nall_0_0_0\npart_type: Compact"这条几十字节的log-0000000000记录,真实就是驱动本系列上一篇《ReplicatedMergeTree》里node2自动拉取数据的完整指令——"replica1有一个新part叫all_0_0_0,动作是get"。Keeper真实存的不是数据本身,而是这类轻量的协调指令和元数据。
每一步都是本文上面用真实system.zookeeper跑出来的原始结果。
clickhouse keeper 实例,真实的 system.zookeeper 表