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
| —— replicas
| —— 1 、2
| —— columns 列信息
| —— flags
| —— host 当前副本的主机信息,端口号
| —— is_active 副本节点ClickHouseServer进程PID

本文介绍了ClickHouse的副本同步机制,通过Zookeeper实现数据异步复制。在副本节点之间,数据插入后会生成part并更新Zookeeper信息,然后通过log进行副本间的同步。副本节点定时读取log并消费队列,从其他副本拉取part数据,完成数据同步。log的清除逻辑也有详细说明。
最低0.47元/天 解锁文章
244

被折叠的 条评论
为什么被折叠?



