如果我们需要使用ClickHouse的ReplicatedMergeTree表同步功能我们需要做一些配置操作
我们只需要修改/etc/clickhouse-server/config.xml
集群配置文件,在该文件中增加类似以下配置信息
<macros incl="macros" optional="true" />
一般此配置默认在ClickHouse中存在的
/etc/clickhouse-server/config.d
文件夹下创建,默认该文件夹不存在,我们使用第二种方式配置创建新的配置文件macros-ck-cluster.xml
mkdir /etc/clickhouse-server/config.d/
touch /etc/clickhouse-server/config.d/macros-ck-cluster.xml
在改配置文件中输入以下内容(注意每个节点的配置信息不相同,比如我们在ck1节点中操作,ck1节点的备份是ck2,那么ck1的配置信息如下):
<yandex>
<macros>
<replica>ck2</replica>
<shard>1</shard>
<layer>ck_cluster</layer>
</macros>
</yandex>
replica
配置当前节点的备份同步节点信息shard
指定的是集群分片信息中的配置,在集群我配置的是shard_1
layer
指定我们的集群标志,或者使用cluster
关键字CREATE TABLE default.test ON CLUSTER mycluster_1
(
`id` Int64,
`ymd` Int64
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/replicated/{shard}/test', '{replica}')
PARTITION BY ymd
ORDER BY id
我们在创建表的时候指定了ReplicatedMergeTree(xxxx)
,里面传递了两个参数,我们对这两个参数一一描述
/clickhouse/tables/
这一部分指定的是在ZK上创建的路径地址,可随意变换只要记得即可{shard}
指的是分片的标志,同一个分片内的所有机器应该保持相同。建议使用使用的是集群名+分片名的配置也就是{layer}-{shard}
,这里的数据就是在macros
中配置的属性test
建议使用表名称{replica}
参数建议在macros
配置成机器的hostname,因为每台机器的hostname都是不一样的,因此就能确保每个表的识别符都是唯一的了CREATE TABLE default.test ON CLUSTER mycluster_1
(
`id` Int64,
`ymd` Int64
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/replicated/{shard}/test', '{replica}')
PARTITION BY ymd
ORDER BY id
Query id: 63135671-8f24-4846-a0a8-471abf608305
┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ ck1 │ 9000 │ 0 │ │ 1 │ 1 │
└───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ ck2 │ 9000 │ 0 │ │ 0 │ 0 │
└───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
2 rows in set. Elapsed: 0.301 sec.
insert into default.test values('1', '20201112');
返回类似如下信息标志插入成功
INSERT INTO default.test VALUES
Query id: 1333b8ce-74e2-4d67-a4b8-0183304bd661
Ok.
1 rows in set. Elapsed: 0.032 sec.
clickhouse-client -h ck1 --port 9000 --multiquery --query="select * from test"
返回如下内容
1 20201112
clickhouse-client -h ck2 --port 9000 --multiquery --query="select * from test"
返回如下内容
1 20201112
两台节点数据返回一致说明我们的分布式表创建成功。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。