前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Clickhouse\Zookeeper扩容

Clickhouse\Zookeeper扩容

作者头像
MySQL轻松学
发布2019-05-08 17:46:34
7.1K6
发布2019-05-08 17:46:34
举报
文章被收录于专栏:MYSQL轻松学MYSQL轻松学

ClickHouse的最佳架构,主要考虑了以下两点:

  • 扩展性,即集群机器越多,性能越高,集群性能=∑单机性能
  • 可靠性,通过使用复制机制,来抵抗单机宕机、机房宕机风险

01

CK新增副本

本测试主要用来做灾难恢复测试,即集群中某个分片对应的两个节点挂了一个,需要新增一个节点,存量数据同步情况和效率。

一、添加副本步骤

1)安装clickhouse

2)生成新的配置文件,加入将新副本

代码语言:javascript
复制
<!--分片1--><shard><replica><internal_replication>true</internal_replication><!--true数据选择一个正常副本写入;默认false,数据会写入所有副本,通过分布式表和复制表更容易造成数据不一致--><host>192.168.1.1</host><port>9000</port><user>user</user><password>password</password></replica><replica> <!—新副本><host>192.168.1.2</host><port>9000</port><user>user</user><password> password </password></replica></shard>

3)将新配置文件拷贝到每个节点,动态生效

4)启动新节点

5)库表需要手动创建,表引擎为ReplicatedMergeTree,创建后数据会自动同步

二、复制原理

1)复制依赖ClickHouse的复制引擎,即ReplicatedMergeTree引擎,在ZK的基础上,共享同一个ZK路径的节点,会相互同步数据。 2)CK的复制过程,就是查看自己所在的副本是否有其他节点的数据片,这个过程就是查看ZK里的元数据,如果没有,就开始从其他节点搬迁数据,搬迁速度等于最大带宽

3)因此,同一份数据,日常至少有2份即可,如果其中一份挂掉,新建一个表,把另一份及时通过过来就好(当然日常保留多份更好) 4)数据一致性,依赖ZK元数据,即复制引擎在做数据块写入的时候,记录的数据块信息数据

02

CK替换副本

一、安装步骤同上

二、修改配置文件

1)生成新的配置文件,将宕机副本剔除,将新副本加入

2)将新配置文件拷贝到每个节点,动态生效

三、如果一个副本宕机且不可恢复,需要更换新的机器,新增节点,需要将ZK里原来的节点信息删除

不然在使用on cluster命令时,因为获取不到剔除的节点信息,而一直等待执行不成功。

03

CK添加分片

一、安装步骤同上

二、修改配置文件

1)生成新的配置文件,将新分片加入

代码语言:javascript
复制
<!--分片1--><shard><replica><host>192.168.1.1</host><port>9000</port><user>user</user><password>password</password></replica></shard><!--分片2--><!--新加入的分片--><weight>2</weight><!—数据写入分片权重,默认1。例如,如果有两个碎片,第一个碎片的权重为9,而第二个碎片的权重为10,则第一个将发送9/19个行,第二个将发送10/19--><shard><replica><host>192.168.1.3</host><port>9000</port><user>user</user><password>password</password></replica></shard>

2)将新配置文件拷贝到每个节点,动态生效

3)由于分片号、权重等不同,新分片最好手动创建库表

04

ZK新增节点

如果CK写入量较大,ZK处理不过来,CK副本间可能会有延迟。可以通过适当添加节点来分担整体压力。

一、ZK安装步骤

1)在新节点安装ZK,可参考

ClickHouse分布式高可用集群搭建

2)生成新配置文件,server.6-7为新加的

代码语言:javascript
复制
server.1=xx.xx.xx.xx:2888:3888:observerserver.2=xx.xx.xx.xx:2888:3888:observerserver.3=xx.xx.xx.xx:2888:3888server.4=xx.xx.xx.xx:2888:3888server.5=xx.xx.xx.xx:2888:3888server.6=xx.xx.xx.xx:2888:3888:observerserver.7=xx.xx.xx.xx:2888:3888:observer

3)将新配置文件拷贝到每个节点,老节点无需重启

4)新节点启动后,新节点需要同步数据,需要等一会

5)查看状态

代码语言:javascript
复制
echo mntr|nc 127.0.0.1 2181| grep zk_server_state或./zkServer.sh status

MYSQL轻松学

微信号:learnmysql

MySQL实战知识分享,紧密业务需求,帮助初学者更快熟悉MySQL,更快成长为高级MySQL DBA。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MYSQL轻松学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档