当前位置: 首页 > news >正文

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上进行查询,成功查询到数据:

相关文章:

  • 新方向!文心一言X具身智能,用LLM大模型驱动智能小车
  • spring boot security 自定义AuthenticationProvider
  • 软考 系统架构设计师系列知识点之边缘计算(5)
  • 力扣138:随机链表的复制
  • CHATGPT----自然辩证法分析
  • 【Hadoop实战】Hadoop指标系统V2分析
  • Spring Boot 3.0正式发布及新特性解读
  • 文件的想对
  • 竞赛选题 深度学习疲劳驾驶检测 opencv python
  • vue+iView实现下载zip文件导出多个excel表格
  • WebSphere Liberty 8.5.5.9 (二)
  • Unity中关于Lerp()方法的使用
  • k8s存储
  • Python与ArcGIS系列(二)获取地图文档
  • 【SpringBoot】手写模拟SpringBoot核心流程
  • 超强C语言跨年烟花代码,精美无比,附源码分步解析
  • No source control providers registered
  • 小程序 打开方式 页面效果 表单页面 点击跳到详情页 图标 获取后台数据 进行页面渲染
  • 智安网络|探索人机交互的未来:自然语言处理的前沿技术
  • C# wpf 实现任意控件(包括窗口)更多拖动功能
  • 上海天文馆走进徐家汇书院,XR沉浸式天文科普体验再推力作
  • 80后女博士黄双燕拟提名为内蒙古盟市政府(行署)副职人选
  • 新华时评:博物馆正以可亲可近替代“高冷范儿”
  • 霍步刚任辽宁沈阳市委书记
  • 阿里上财年营收增6%,蒋凡:会积极投资,把更多淘宝用户转变成即时零售用户
  • 不是10点!乌克兰官员称尚未就俄乌谈判开始时间达成一致