clickhouse 三种高可用方案

  1. 简介

 

本文介绍三种高可用使用,及验证clickhouse的高可用性,三种方案分别如下:

不管是多分片还是多副本都是以集群方式部署,那么对外暴露多台Clickhouse服务,通常会通过LB方式使每台服务器能够均匀的接受到客户端的请求,另外一点就是在其中一台服务发生故障,仍然能通过故障转移方式正常对外提供服务。

 

  1. nginx代理
    客户端连接clickhouse的时候通过nginx做负载均衡,因为本身clickhouse支持http协议,端口号为http端口,所以此种方案直接使用nginx的http代理即可。
  2. clickhouse驱动
    Clickhouse-jdbc是使用负载均衡客户端ru.yandex.clickhouse.BalancedClickhouseDataSource来保证的,本质上是通过后台启动一个线程定时去探测clickhouse服务端,生成可用的地址列表。然后获取连接的时候从可用地址列表中随机选择一个节点来建立连接。
  3. 通过chproxy
    chproxy即专为clickhouse使用的代理,功能更为强大。

测试服务器地址

ip

服务

10.0.10.2:8123 clickhouse(与10.0.10.3互为为主备)
10.0.10.3:8123 clickhouse (与10.0.10.2互为为主备)
10.0.10.5:8123 chproxy  
10.0.10.5:18123 nginx

测试点:

  1. 两台clickhouse服务运行正常,查询分布到2台机器
  2. 任意一台宕机,程序执行正常
  3. 当宕机机器恢复正常,数据能从恢复
前置条件

    创建本地表

CREATE TABLE repl_abc on cluster cluster1

(
`id` String,
`price` Float64,
`create_time` DateTime
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/repl_abc','{replica}')
PARTITION BY toYYYYMM(create_time)
ORDER BY id;

创建分布式表

 CREATE TABLE repl_abc_all on cluster cluster1

(

`id` String,
`price` Float64,
`create_time` DateTime
)
ENGINE = Distributed('cluster1','default','repl_abc', rand());

插入测试数据

insert into repl_abc_all values('01X001',123,'2021-05-01 09:09:00'),('02X002',123,'2021-06-01 09:09:00'),('03W001',321,&#
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ClickHouse是一种分布式列式存储数据库,它支持自动数据分片和数据复制,以实现高性能和高可用性。在ClickHouse中,数据分片是基于表中的分区键(Partition Key)进行的。 扩容ClickHouse集群可以通过增加分片服务器(Shard Server)数量来实现。以下是一种可能的扩容方案: 1. 准备新的分片服务器。可以使用现有硬件或云资源创建新的分片服务器,确保新服务器与现有服务器的硬件规格和操作系统版本相同。 2. 安装ClickHouse。在新的分片服务器上安装与现有服务器相同版本的ClickHouse软件,并进行必要的配置,如网络设置、文件系统等。 3. 创建新的分片。使用ClickHouse的系统表或命令行工具,向集群添加新的分片服务器,确保新的分片与现有分片相同。 4. 同步数据。可以使用ClickHouse的内置工具或第三方工具(如ClickHouse-Shadow)来将现有分片中的数据复制到新的分片中。 5. 重新分配分片。在所有数据已经同步的情况下,使用ClickHouse的ALTER TABLE命令重新分配表的分片,以将新的分片包含在内。可以选择不停机重分片或停机重分片。 6. 监控和测试。在扩容完成后,对新的分片服务器进行监控和测试,确保数据复制和查询性能符合预期。 请注意,这只是一种可能的扩容方案,实际情况可能因环境和需求而异。在进行任何操作之前,请务必备份数据,并在测试环境中进行验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值