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副本集群搭建完毕~

谢谢大家~~~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值