Clickhouse 副本节点之间通过Zookeeper 的log数据和其他控制信息,实现了副本间数据的异步同步。本文中简单介绍插入数据后副本之间同步流程。
副本表Zookeeper目录结构
创建副本表,并插入数据,在Zookeeper上可以看到表目录下主要包含下列目录信息, ReplicatedMergeTree(’/clickhouse/tables/{shard}/tbl_replicated’, ‘{replica}’)
tbl_replicated:
| —— block_numbers
|all
| —— blocks
| —— columns 列信息
| —— leader_election
| —— leader_election-0000000000 主信息,副本节点(multiple leaders ok)
| —— log
| —— log-0000000000 part名称以及相关的块信息,创建时间,source replica, part_type
| —— metadata 元数据信息 (未变化)
| —— mutations 空 (未变化)合并场景,alter table的场景
| —— nonincrement_block_numbers 空 (未变化)
| —— quorum ----> 默认情况下,INSERT 语句仅等待一个副本写入成功后返回。
如果数据只成功写入一个副本后该副本所在的服务器不再存在,
则存储的数据会丢失。
要启用数据写入多个副本才确认返回,使用 insert_quorum 选项。
| —— failed_parts
| —— last_part
| —— parallel