ClickHouse之ReplicatedMergeTree引擎介绍

Replicated 副本的意思,副本可以让我们的服务高可用

1 什么是ClickHouse的副本:

  • 两个相同数据的表, 作用是为了数据备份与安全,保障数据的高可用性

  • 副本是表级别的,不是整个服务器级的,服务器里可以同时有复制表和非复制表。

  • 副本不依赖分片,每个分片有它自己的独立副本。

2 副本写入流程:

3 副本同步需要借助zookeeper实现数据的同步, 副本节点会在zk上进行监听,但数据同步过程是不经过zk的

安装zk:

docker run -d --name zookeeper -p 2181:2181 -t zookeeper:3.7.0

4 建表语句示例

CREATE TABLE tb_order
(
    EventDate DateTime,
    CounterID UInt32,
    UserID UInt32
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/01/tb_order', 'tb_order_01')
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)

'/clickhouse/tables/01/tb_order' 表示 ZooKeeper 中该表的路径,对每个可复制表都要是唯一的,不同分片上的表要有不同的路径

推荐格式:

/clickhouse/tables/{shard}/{table_name}

'tb_order_01'表示副本名称

5 搭建高可用集群架构 clickhouse副本实战配置

这里我们准备三台机器:

①搭建zookeeper

②部署clickhouse节点1,配置并且启动(配置如下)

③部署clickhouse节点2,配置并且启动(配置如下)

#进入配置目录
cd /etc/clickhouse-server

#编辑配置文件
sudo vim config.xml

#找到zookeeper节点,增加下面的,如果有多个zk则按照顺序加即可
<zookeeper>
          <node>
                <host>172.18.123.230</host>
                <port>2181</port>
          </node>
</zookeeper>

启动zk服务,在两台clickhouse节点上分别建表

CREATE TABLE tb_product
(
    userId UInt32
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/1/tb_product', 'product-replica-1')
ORDER BY (userId)


CREATE TABLE tb_product
(
    userId UInt32
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/1/tb_product', 'product-replica-2')
ORDER BY (userId)

接下来,我们往其中任何一个节点新增数据,另一个节点也会同步到数据

到此clickhouse副本集群搭建完毕~

谢谢大家~~~

  • 1
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 3
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

bboy66

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值