ClickHouse的备份机制依赖于zookeeper来实现,并且只有MergeTree系列的表可以支持副本。
副本是表级别的,不是整个服务器级别的,所以在相同的服务器(cluster)上可以同时存在备份表和非备份表。
副本不依赖与分片,每个分片都有它自己的独立副本。
修改配置
如果要使用副本,需要在配置文件中设置zookeeper集群的地址。例如:
|
|
对于不同的机器,这个配置不相同。
|
|
如果配置文件中没有设置zk,则无法创建复制表,并且任何现有的复制表都将变为只读。
在zk中存储元数据的路径是在创建表时指定的。
DDL
|
|
Replicated*MergeTree的参数
zoo_path
— 在ZooKeeper中元数据的存储路径.replica_name
— 该节点在ZooKeeper中的名称.other_parameters
— Parameters of an engine which is used for creating the replicated version, for example, version inReplacingMergeTree
.
这里给的例子是创建了一个ReplacingMergeTree的备份表,Replace的规则是字段ver
。这个表的元数据存储在zk的位置是:/clickhouse/tables/05-02/test_table
。
数据写入过程
由于ClickHouse是多主架构,所以可以在任意一个阶段进行数据写入,数据写入后会将元信息存储到zk中,包括(哪个节点写入了数据,数据存储的位置等)。其他节点检测到变换后会通过元信息向写入数据的阶段来拉取数据。
其他操作类型信息同步流程
- Optimize Table
- Alert Delete
- Alert Table