1、clickhouse集群有分片和副本的概念;
比如3分片,2副本的集群:
三分片的意思是所有数据分为三份存储进三个分片内,具体数据分配比例取决于配置内的weight权重;
两副本的意思是针对每一个分片,存在两个副本,这两个副本保存的数据都是一样的,相互备份;
2、clickhouse集群依靠zookeeper做数据同步和状态同步,replicaedmergetree也就是复制表在副本之间的数据同步就是依赖zookeeper进行的
3、在集群上创建和删除表时使用on cluster clustername;
4、 drop on cluster 后再次创建提示 /clickhouse/tables/s1/dwd/xxxx/replicas/dt_fault already exists,这是因为删除状态没有同步到zookeeper,这是因为删除状态同步给zookeeper是异步的,解决方法如下:
a. 使用drop table table1 on cluster clustername sync,加了sync后就会立刻将删除状态同步到zookeeper,再次创建就不会报错了;
b.将使用的数据库引擎由atomic(默认库引擎)改为ordinary;
c.建表语句的replicatedMergeTree的第一个参数(在zookeeper存储此表元信息的文件夹地址),指定为带uuid的格式,这样和前面drop的表区分开就好了:
/clickhouse/tables/{layer}-{shard}-{uuid}/{database name}/{tablename}