- 副本
- 1、目的
- 2、特点
- 3、流程
- 4、副本配置
- 分片
- 1、目的
- 2、简略过程
- 3、配置文件(一般采用外置配置文件的方式)
- 4、internal_replication
1、目的
2、特点保障数据的高可用性,即某一 clickhouse 节点宕机,也可以从其他服务器获取相同的数据(副本之间数据相同)。
- 副本的实现依赖于 Zookeeper。
- 副本之间等级相同,互为副本,不存在主从副本。
写入:
- 向某一副本的表写入数据
- 往zookeeper提交写入日志
- 其他副本收到写入日志
- 其他副本开始从目标副本下载新数据
读取:读取数据过程,会优先选择errors_count小的副本(在查询过程中,如果某一副本表发生了异常,会更新errors_count),在errors_count相同值的情况下,就会出现随机、顺序、hosts名称近似等的选择方式
4、副本配置-
本地配置副本
...
...test01 9001 -
加载外置文件的方式配置副本
test01 9001 - clickhouse配置文件增加:
外置文件的路径
1、目的
2、简略过程为了对数据横向扩容,可以通过分片把数据进行拆分,存储在不同的节点(不同节点数据不相同)。
3、配置文件(一般采用外置配置文件的方式)通过分片把一份完整的数据进行切割,不同的分片分布到不同的节点上,再由Distribute引擎把数据拼接起来一同使用(通过分布式逻辑表来写入、分发、路由来操作不同分片的分布式数据)
yandex # 根节点,固定关键字 clickhouse_remote_servers # clickhouse远程服务配置,固定关键字 cluster_name # 集群名称,可自定义 shard # 分片,可配置多个,固定关键字 internal_replication # 设置内部副本的关联方式,固定关键字 replica # 副本,可配置多个,固定关键字 host # 副本的节点名称,固定关键字 port # 副本端口,固定关键字
4、internal_replicationtrue test101 9001 true test102 9001
分布式表:a,副本一:b1,副本二:b2
-
true
指先由分布式表更新一个表,然后通过该表对其他副本表进行同步。例如:读取、写入命令经过分布式表a,会将数据更新到b1/b2表,在通过b1/b2将数据同步至b2/b1表。
-
false
指由分布式表更新所有副本表。例:读取、写入命令经过分布式表a,再一一同步b1、b2表(都从a来同步)



