设为首页 加入收藏

TOP

Clickhouse高可用配置总结(一)
2019-10-09 20:06:09 】 浏览:101
Tags:Clickhouse 可用 配置 总结

1. 简述

Clickhouse默认是多分片单副本集群,分布式表的配置是每个分片只有一份,如果某个节点挂掉的话,则会直接导致写入或查询异常;Clickhouse是具有高可用特性的,即每个分片具有2个或以上的副本,当某个节点挂掉时,其他节点上的副本会替代其继续工作,以保证集群正常运行。

本文主要介绍近期针对clickhouse高可用配置的方法以及数据复制的几种方式进行总结。

2. 环境说明

2.1. 软硬件环境

硬件环境

CPU:8  Intel Xeon E312xx (Sandy Bridge)

内存:16 GB

网卡:千兆虚拟网卡

软件环境

OSCentOS Linux release 7.5.1804

ClickHouse 19.4.3.1.

2.2. 集群介绍

序号

名称

IP

1

wuxiang-test-1

192.168.40.218

2

wuxiang-test-2

192.168.40.238

3

wuxiang-test-3

192.168.40.239

4

wuxiang-test-4

192.168.40.240

5

wuxiang-test-5

192.168.40.241

3. 配置文件说明

clickhouse高可用配置主要用到metrika.xml,默认路径:/etc/metrika.xml

  internal_replication

表示是否只将数据写入其中一个副本,默认为false,表示写入所有副本,在复制表的情况下可能会导致重复和不一致,所以这里一定要改为true

四种复制模式:

  • 非复制表,internal_replication=false写入单机表时,不同服务器查询结果不同;插入到分布式表中的数据被插入到两个本地表中,如果在插入期间没有问题,则两个本地表上的数据保持同步。我们称之为穷人的复制,因为复制在网络出现问题的情况下容易发生分歧,没有一个简单的方法来确定哪一个是正确的复制。
  • 非复制表,internal_replication=true。数据只被插入到一个本地表中,但没有任何机制可以将它转移到另一个表中。因此,在不同主机上的本地表看到了不同的数据,查询分布式表时会出现非预期的数据。显然,这是配置ClickHouse集群的一种不正确的方法。
  • 复制表,internal_replication=true。插入到分布式表中的数据仅插入到其中一个本地表中,但通过复制机制传输到另一个主机上的表中。因此两个本地表上的数据保持同步。这是官方推荐配置。
  • 复制表,internal_replication=false。数据被插入到两个本地表中,但同时复制表的机制保证重复数据会被删除。数据会从插入的第一个节点复制到其它的节点。其它节点拿到数据后如果发现数据重复,数据会被丢弃。这种情况下,虽然复制保持同步,没有错误发生。但由于不断的重复复制流,会导致写入性能明显的下降。所以这种配置实际应该是避免的。

 

一条数据要insert到ontime_all_2中,假设经过rand()实际是要写入到hadoop1的ontime_local表中,此时ontime_local配置了两个副本。
如果internal_replication是false,那么就会分别往两个副本中插入这条数据。注意!!!分别插入,可能一个成功,一个失败,插入结果不检验!这就导致了不一致性;
而如果internal_replication是true,则只往1个副本里写数据,其他副本则是由ontime_local自己进行同步,这样就解决了写入一致性问题。

 

配置文件中macros若省略,则建复制表时每个分片需指定zookeeper路径及副本名称,同一分片上路径相同,副本名称不同;若不省略需每个分片不同配置:

<!-- wuxiang-test-1 -->  

  1. <macros>  
  2. <shard>01</shard>  
  3. <replica>replica1</replica>  
  4. </macros>  

<!-- wuxiang-test-2 -->  

  1. <macros>  
  2. <shard>01</shard>  
  3. <replica>replica2</replica>  
  4. </macros>  

<!-- wuxiang-test-3 -->  

  1. <macros>  
  2. <shard>02</shard>  
  3. <replica>replica1</replica>  
  4. </macros>  

<!-- wuxiang-test-4 -->  

  1. <macros>  
  2. <shard>02</shard>  
  3. <replica>replica2</replica>  
  4. </macros>  

4. 复制表引擎说明

复制表引擎采用Replicated*MergeTree表引擎,此类表引擎支持表级别的数据副本,要使用副本,需在配置中设置zookeeper集群地址。

--创建复制表  

  1. CREATE TABLE test.szt_data_rep   
  2. (  
  3. id String,   
  4. card_id String,   
  5. deal_time String,   
  6. trade_type String,   
  7. trade_sum Int16,   
  8. trade_value Int16,   
  9. terminal_code String,   
  10. com_line String,   
  11. line_station String, &n
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇大数据量高并发的数据库优化,sql.. 下一篇LeetCode——Duplicate Emails(..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目