【ClickHouse入门】六、ClickHouse副本

6.1 副本写入流程

 

 

6.2 配置步骤

  (1)启动zookeeper集群

  (2)在T1的/etc/clickhouse-server/config.d 目录下创建一个名为metrika.xml的配置文件,内容如下:

  注:也可以不创建外部文件,直接在config.xml中指定<zookeeper>

<?xml version="1.0"?>
<yandex>
  <zookeeper-servers>
    <node index="1">
      <host>T1</host>
      <port>2181</port>
    </node>
    <node index="2">
      <host>T2</host>
      <port>2181</port>
    </node>
    <node index="3">
      <host>T3</host>
      <port>2181</port>
    </node>
  </zookeeper-servers>
</yandex>

  (3)同步到T2,T3上

  (4)在T1的 /etc/clickhouse-server/config.xml中增加

<zookeeper incl="zookeeper-servers" optional="true" />
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>

  (5)同步到T2,T3上

  (6)因为修改了配置文件,需要重启clickhouse

[root@T1 ~]# clickhouse restart

  (7)在T1,T2,T3上分别建表

T1:

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

T2:

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

T3:

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

参数解释:

ReplicatedMergeTree 中:

第一个参数是分片的 zk_path 一般按照:/clickhouse/table/{shard}/{table_name} 的格式写,如果只有一个分片就写 01 即可。

第二个参数数是副本名称,相同的分片副本名称不能相同

  (8)在T1上执行插入语句

insert into t_order_rep2 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');

  (9)在T2上执行select查询,可以查询出结果,说明副本配置正确

T2 :) select * from t_order_rep2;

SELECT *
FROM t_order_rep2

Query id: c186b8ac-2cfe-4d9a-87a4-b82c31906f8c

┌──id─┬─sku_id──┬─total_amount─┬─────────create_time─┐
│ 101 │ sku_001 │      1000.002020-06-01 12:00:00 │
│ 102 │ sku_002 │      2000.002020-06-01 12:00:00 │
│ 103 │ sku_004 │      2500.002020-06-01 12:00:00 │
│ 104 │ sku_002 │      2000.002020-06-01 12:00:00 │
└─────┴─────────┴──────────────┴─────────────────────┘
┌──id─┬─sku_id──┬─total_amount─┬─────────create_time─┐
│ 105 │ sku_003 │       600.002020-06-02 12:00:00 │
└─────┴─────────┴──────────────┴─────────────────────┘

5 rows in set. Elapsed: 0.004 sec.

 

posted @ 2021-08-12 16:18  蟹Bro  阅读(405)  评论(0)    收藏  举报