ClickHouse 副本同步备份

副本的目的主要是保障数据的高可用性与容灾,即使一台ClickHouse节点宕机,那么也可以从其他服务器获得相同的数据。副本数据同步,意思就是在主表上做任何增删改的操作,副本会进行相应的同步操作。而副本的数据则是来源与主表。副本同步只能同步数据,不能同步表结构,所以每台机器上的表需要自己手动创建。

主副本配置

zookeeper可单节点也可以集群,这里采用单节点模式。在主库 /etc/clickhouse-server/config.d/ 的目录中创建metrika.xml配置文件,内容如下

<yandex>
    <zookeeper-servers>
        <node index="1">
            <host>这里可以是zookeepr所在的服务器IP也可以是在hosts中映射好的主机名字</host>
            <port>2181</port>
        </node>
    </zookeeper-servers>
</yandex>

然后在 /etc/clickhouse-server/config.xml 中找到所在行,在它的下方将上面创建的metrika.xml引入进去
在这里插入图片描述
然后重启,副本clickhouse-server也做如上同样的操作。完成配置后,就可以建表测试。

在主库上创建如下表:

create table t_order_rep (
    id UInt32,
    sku_id String,
    total_amount Decimal(16,2),
    create_time  Datetime
 ) engine =ReplicatedMergeTree('/clickhouse/tables/01/t_order_rep','rep_102')
   partition by toYYYYMMDD(create_time)
   primary key (id)
   order by (id,sku_id);

在副本上创建如下表:

create table t_order_rep (
    id UInt32,
    sku_id String,
    total_amount Decimal(16,2),
    create_time  Datetime
 ) engine =ReplicatedMergeTree('/clickhouse/tables/01/t_order_rep','rep_103')
   partition by toYYYYMMDD(create_time)
   primary key (id)
   order by (id,sku_id);

参数解释
ReplicatedMergeTree 中,
  第一个参数是分片的zk_path一般按照: /clickhouse/table/{shard}/{table_name} 的格式写,如果只有一个分片就写01即可。
  第二个参数是副本名称,相同的分片副本名称不能相同。

然后在主库中执行以下插入语句,这个时候副本也会出现一样的数据

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');

引用来源:https://www.cnblogs.com/shengyang17/p/14282944.html#_lab2_0_1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值