【ClickHouse】6:clickhouse集群高可用
背景介绍:
有四台CentOS7服务器安装了ClickHouse
| HostName | IP | 安装程序 | 程序端口 | shard(分片) | replica(备份) |
| centf8118.sharding1.db | 192.168.81.18 | clickhouse-server,clickhouse-client | 9000 | 01 | 01 |
| centf8119.sharding2.db | 192.168.81.19 | clickhouse-server,clickhouse-client | 9000 | 01 | 02 |
| centf8120.sharding3.db | 192.168.81.20 | clickhouse-server,clickhouse-client | 9000 | 02 | 01 |
| centf8125 | 192.168.81.25 | clickhouse-server,clickhouse-client | 9000 | 02 | 02 |
一:在所有节点安装clickhouse-server。
略
二:修改metrika.xml(或config.xml)文件。
如果没有用到包含的metrika.xml配置文件,也可以直接配置在config.xml文件。
涉及三部分remote_servers,zookeeper,macros,所有的节点的remote_servers,zookeeper是一样的,不同的是macros。
每个节点根据自己的角色修改shard和replica的值;下面给出sharding1这个节点的配置。
<yandex>
<!-- 集群配置 -->
<clickhouse_remote_servers>
<!-- 2分片2备份 -->
<cluster_2shards_2replicas>
<!-- 数据分片1 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>centf8118.sharding1.db</host>
<port>9000</port>
</replica>
<replica>
<host>centf8119.sharding2.db</host>
<port>9000</port>
</replica>
</shard>
<!-- 数据分片2 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>centf8120.sharding3.db</host>
<port> 9000</port>
</replica>
<replica>
<host>centf8125</host>
<port> 9000</port>
</replica>
</shard>
</cluster_2shards_2replicas>
</clickhouse_remote_servers> <!-- zookeeper 配置 -->
<zookeeper-servers>
<node index="1">
<host>centf8118.sharding1.db</host>
<port>4181</port>
</node>
<node index="2">
<host>centf8119.sharding2.db</host>
<port>4181</port>
</node>
<node index="3">
<host>centf8120.sharding3.db</host>
<port>4181</port>
</node>
<node index="3">
<host>centf8125</host>
<port>4181</port>
</node>
</zookeeper-servers> <!-- macros配置 -->
<macros>
<shard>01</shard>
<replica>01</replica>
</macros>
</yandex>
三:建表
3.1:创建实体表:t_s2_r2
CREATE TABLE t_s2_r2\
(\
dt Date,\
path String \
)\
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/t_s2_r2','{replica}',dt, dt, 8192) ;
在每个节点创建t_s2_r2,不需要手动替换shard和replica,建表的时候会根据shard和replica数据自行在zookeeper中注册。
3.2:创建分布表:t_s2_r2_all
这个表在任何一个节点创建都行,t_s2_r2_all就像一个视图,指向所有的分片,数据真正的存储在每个节点的t_s2_r2表。
# 创建分区表
CREATE TABLE t_s2_r2_all AS t_s2_r2 ENGINE = Distributed(cluster_2shards_2replicas, datasets, t_s2_r2, rand())
四:插入数据
insert into t_s2_r2_all values('2020-09-01','path1');
insert into t_s2_r2_all values('2020-09-02','path2');
insert into t_s2_r2_all values('2020-09-03','path3');
insert into t_s2_r2_all values('2020-09-04','path4');
五:查看数据
复制表和分布表原理: https://blog.csdn.net/qq_36951116/article/details/105511422
【ClickHouse】6:clickhouse集群高可用的更多相关文章
- Rabbitmq集群高可用测试
Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...
- openstack pike 集群高可用 安装 部署 目录汇总
# openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...
- 浅谈MySQL集群高可用架构
前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...
- bitmq集群高可用测试
Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...
- Eureka 集群高可用配置.
SERVER:1 server: port: 1111 eureka: instance: hostname: ${spring.cloud.client.ip-address} instance-i ...
- 集群高可用之lvs+keepalive
集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...
- mysql集群高可用架构
前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...
- hadoop+zookeeper集群高可用搭建
hadoop+zookeeper集群高可用搭建 Senerity 发布于 2 ...
- RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列
系列文章: RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解 RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列 ...
- RabbitMQ从零到集群高可用(.NetCore5.0) -高可用集群构建落地
系列文章: RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解 RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列 ...
随机推荐
- RAC关闭【Oracle 10g】
顺序:关闭监听->关闭实例->关闭服务->关闭软件 1.关闭监听 进入节点1,[oracle@arprac01 ~]$lsnrctl stop 进入节点2,[oracle@arpra ...
- Go:基于 MongoDB 构建 REST API — Fiber 版
本文主要在于带着大家完成一个基本的 CRUD 工作,让大家熟悉 Fiber + MongoDB 构建 RESTful API,熟悉工作流程.同时了解相关库的使用. 本文的完整代码见:https://g ...
- linux开发vue项目,不能热更新?
只需要运行下面的命令即可: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo ...
- chgrp chown
chgrp 用来改变文件所属群组,如果要改变的群组不在/etc/group里面,将会报错. chown 用来改变文件的所有者,如果改变的所有者便在/etc/passwd里面,将会报错. 需要注意的是c ...
- java stream数据分组 stream().collect(groupingBy
List<Map<String, Object>> foreList = forecastDataDao.getcityforeresults(param); Map<S ...
- Kingbase+sqlsugar 携手助力医疗国产化替换 【人大金仓 .NET ORM】
1. 案例 西京医院CT预约系统, 该项目在2024年初进行上线测试,在正常运行了两天后,业务系统报错:The connection pool has been exhausted, either r ...
- Istio(十二):Istio问题排查
目录 一.模块概览 二.Envoy基础 2.1 Envoy 基础 三.Envoy示例 四.调试备忘录 4.1 配置 4.2 运行时 4.3 检查 Envoy 日志 4.4 配置 istiod 日志 一 ...
- 对比使用IConfigurationSectionHandler和ConfigurationSection自定义节点和自定义处理程序
使用自定义处理程序处理节点的好处我认为是,可以在业务代码中,不必再写一些读取配置文件的非业务代码了,只管取值.如果多处使用该配置节点,其优势更能体现出来.然后突然要增删配置,也只管改节点处理程序的代码 ...
- mysql in不走索引可能的情况
在MySQL 5.7.3以及之前的版本中,eq_range_index_dive_limit的默认值为10,之 后的版本默认值为200.所以如果大家采用的是5.7.3以及之前的版本的话,很容易采用索引 ...
- 搭建单机版伪分布式Hadoop+Scala+spark
搭建单机版伪分布式Hadoop+Scala+spark 修改ip [root@master ~]# nmcli connection add ifname ens32 con-name ens32 a ...