Clickhouse学习笔记(5)—— ClickHouse 副本
Data Replication | ClickHouse Docs
副本的目的主要是保障数据的高可用性,即使一台 ClickHouse 节点宕机,那么也可以从其他服务器获得相同的数据
注意:
- clickhouse副本机制的实现要基于zookeeper
- clickhouse的副本机制只适用于MergeTree family
副本写入流程

注意:两台clickhouse服务器没有主从之分
副本配置流程
1.启动 zookeeper 集群(版本:3.5.7)
通过prettyZoo可以实现zookeeper节点的可视化:

下载地址:Releases · vran-dev/PrettyZoo · GitHub
2.指定要使用的zookeeper服务器
有两种方法:
首先打开/etc/clickhouse-server/config.xml
搜索关键词zookeeper:

(730行)
方法①(内部设置):取消<zookeeper></zookeeper>之间内容的注释,按照自己zookeeper节点的配置修改host和port即可
方法②(外部设置)参考注释内容配置

首先在/etc/clickhouse-server/config.d文件夹下创建配置文件metrika.xml(配置文件路径以及文件名自定义即可,这里是官方的建议)
将以下内容写入配置文件中:
<?xml version="1.0"?>
<yandex>
<zookeeper-servers><node index="1"><host>hadoop102</host><port>2181</port></node><node index="2"><host>hadoop103</host><port>2181</port></node><node index="3"><host>hadoop104</host><port>2181</port></node>
</zookeeper-servers>
</yandex>
其中<zookeeper></zookeeper>之间的内容与内部配置基本一样
然后打开/etc/clickhouse-server/config.xml
添加以下内容:
<zookeeper incl="zookeeper-servers" optional="true" />
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>

之后将配置同步到其他节点上即可
3.启动clickhouse集群
如果之前未启动,直接启动即可
如果已经启动,则需要重启
副本机制测试
需要注意:副本只能同步数据,不能同步表结构,所以我们需要在每台机器上自己手动建表
在hadoop102上
create table t_order_rep (\id UInt32,\sku_id String,\total_amount Decimal(16,2),\create_time Datetime\
) engine =ReplicatedMergeTree('/clickhouse/table/01/t_order_rep','rep_102')\
partition by toYYYYMMDD(create_time)\
primary key (id)\
order by (id,sku_id);
其中指定引擎为:engine =ReplicatedMergeTree('/clickhouse/table/01/t_order_rep','rep_102')
通过官方文档可以得知,合并书家族的每一种引擎都有其对应的副本引擎:

所以ReplicatedMergeTree即支持副本机制的合并树引擎;
两个参数:
参数1—分片的 zk_path 一般按照:/clickhouse/table/{shard}/{table_name} 的格式,如果只有一个分片就写 01 即可
配置完成后可以在prettyzoo中查看到相应的内容:

参数2—副本名称(相同的分片副本名称不能相同)
在hadoop103上:
create table t_order_rep (\id UInt32,\sku_id String,\total_amount Decimal(16,2),\create_time Datetime\
) engine =ReplicatedMergeTree('/clickhouse/table/01/t_order_rep','rep_103')\
partition by toYYYYMMDD(create_time)\
primary key (id)\
order by (id,sku_id);
之后在hadoop102上插入数据:
insert into t_order_rep values\
(101,'sku_001',1000.00,'2020-06-01 12:00:00'),\
(102,'sku_002',2000.00,'2020-06-01 12:00:00'),\
(103,'sku_004',2500.00,'2020-06-01 12:00:00'),\
(104,'sku_002',2000.00,'2020-06-01 12:00:00'),\
(105,'sku_003',600.00,'2020-06-02 12:00:00');
在hadoop103上进行查询,成功查询到数据:

相关文章:
Clickhouse学习笔记(5)—— ClickHouse 副本
Data Replication | ClickHouse Docs 副本的目的主要是保障数据的高可用性,即使一台 ClickHouse 节点宕机,那么也可以从其他服务器获得相同的数据 注意: clickhouse副本机制的实现要基于zookeeperclickhouse的副本机制只适用于MergeTree f…...
ELMo模型、word2vec、独热编码(one-hot编码)的优缺点进行对比
下面是对ELMo模型、word2vec和独热编码(one-hot编码)的优缺点进行对比: 独热编码(One-hot Encoding): 优点: 简单,易于理解。适用于词汇表较小的场景。 缺点: 高维度…...
FFmpeg简介1
适逢FFmpeg6.1发布,准备深入学习下FFmpeg,将会写下系列学习记录。 在此列出主要学习资料,后续再不列,感谢这些大神的探路和分享,特别是雷神,致敬! 《FFmpeg从入门到精通》 《深入理解FFmpeg》 …...
2352 智能社区医院管理系统JSP【程序源码+文档+调试运行】
摘要 本文介绍了一个智能社区医院管理系统的设计和实现。该系统包括管理员、护工和医生三种用户,具有社区资料管理、药品管理、挂号管理和系统管理等功能。通过数据库设计和界面设计,实现了用户友好的操作体验和数据管理。经过测试和优化,系…...
高教社杯数模竞赛特辑论文篇-2023年B题:多波束测线布设(附获奖论文及MATLAB代码实现)(续)
目录 5.3.3 模拟退火对测线布设仿真检验 5.3.4 开角、坡度的灵敏度分析...
【fast2021论文导读】 Learning Cache Replacement with Cacheus
文章:Learning Cache Replacement with Cacheus 导读摘要: 机器学习的最新进展为解决计算系统中的经典问题开辟了新的、有吸引力的方法。对于存储系统,缓存替换是一个这样的问题,因为它对性能有巨大的影响。 本文第一个贡献,确定了与缓存相关的特征,特别是,四种工作负载…...
在 React 中选择使用 JSX 或 JavaScript
在 React 中选择使用 JSX 或 JavaScript JSX vs. JavaScriptReact Component Lifecycle JSX 是 React 最常用的语法之一,它允许我们在 HTML 中嵌入 JavaScript 语句和表达式。但是,如果我们不需要 JSX 又该怎么办呢?让我们一起来了解一下 J…...
Halcon WPF 开发学习笔记(4):Halcon 锚点坐标打印
文章目录 专栏前言锚点二次开发添加回调函数辅助Model类 下集预告 专栏 Halcon开发 博客专栏 WPF/HALCON机器视觉合集 前言 Halcon控件C#开发是我们必须掌握的,因为只是单纯的引用脚本灵活性过低,我们要拥有Halcon辅助开发的能力 锚点开发是我们常用的…...
【从0到1设计一个网关】性能优化---使用Disruptor提供缓冲区
文章目录 什么是缓冲区队列Disruptor高性能的原因Disruptor实战注:学习这篇文章之前推荐先对Disruptor的使用有了解,否则我的代码中即使有非常详细的注释你也并不能理解这些注释的作用,以及为什么我要需要这样子编写代码。 同时,这将会是网关系列最后一篇文章,由于文章写的…...
Redis 特殊数据类型
目录 1、redis地理空间(GEO) 2、redis基数统计(HyperLogLog) 3、redis位图(bitmap) 4、redis位域bitfield) 5、redis流(Stream) 1、redis地理空间(GEO) Redis 的地理空间数据结构(GEO)可以用于存储地理位置信息,并支持附近位置搜索等功能…...
【Windows网络编程】二.TCP套接字编程与主机上线实验
API: socket: 套接字函数创建绑定到特定传输服务提供程序的套接字。 函数原型:SOCKET WSAAPI socket([in] int af,[in] int type,[in] int protocol );参数: af:地址规范系列: AF_INET:IPv4&…...
Qt 事件循环
引出 UI程序之所叫UI程序,是因为需要与用户有交互,用户交互一般是通过鼠标键盘等的输入设备,那UI程序就需要有能随时响应用户交互的能力。 一个C程序的main函数大概是下面这样: int main() {...return 0; } 我们如何使程序能随…...
【趣味随笔】YOLO的“进化史”极简版(YOLO v1-->YOLOP)
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
Leetcode421. 数组中两个数的最大异或值
Every day a Leetcode 题目来源:421. 数组中两个数的最大异或值 解法1:贪心 位运算 初始化答案 ans 0。从最高位 high_bit 开始枚举 i,也就是 max(nums) 的二进制长度减一。设 newAns ans 2i,看能否从数组 nums 中选两个…...
SPRINGBOOT整合CXF发布WEB SERVICE和客户端调用(用户和密码验证)
主要分为客户端和服务端 服务端 pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.3</version><relativePath/> <!-- lookup parent fro…...
代码随想录训练营Day5:哈希数组
算是哈希的容器:数组(适合连续存放);set,map(适合无序存放)。所以数组操作就是hash[i];而set,map.insert(元素),map可以map[]是因为map存放了键值对可以索引查找。关于几个数组相加等…...
腾讯云3年轻量2核2G4M和2核4G5M服务器540元三年
腾讯云轻量应用服务器特价是有新用户限制的,所以阿腾云建议大家选择3年期轻量应用服务器,一劳永逸,免去续费困扰。腾讯云轻量应用服务器3年可以选择2核2G4M和2核4G5M带宽,3年轻量2核2G4M服务器540元,2核4G5M轻量应用服…...
程序员的护城河:职业发展的关键元素
目录 1. 技术深度与广度 2. 项目经验与实际操作 3. 沟通与团队协作 4. 持续学习与自我更新 5. 社区参与与开源贡献 6. 创新思维与解决问题的能力 7. 职业规划与自我管理 结语 在科技日新月异的今天,程序员的竞争已经不再仅仅依赖于技术水平,而是…...
基于SpringBoot+Vue的在线学习平台系统
基于SpringBootVue的在线学习平台系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 用户界面 登录界面 管理员界面 摘要 本文设计并实现了一套基于Spri…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
