clickhouse 集群 建表基础流程
1.创建4个vm(ubuntu),分别安装clickhouse,配置集群信息,ck版本21.11.4.142.配置集群信息,2个分片,1个副本sudo vim /etc/clickhouse-server/config.xml在该文件中,配置3个部分内容:a) remote_servers, b) zookeeper, c)macrosa) 标明各个分片、副本信息,host、port<int
1.创建4个vm(ubuntu),分别安装clickhouse,配置集群信息,ck版本21.11.4.14
2.配置集群信息,2个分片,1个副本
sudo vim /etc/clickhouse-server/config.xml
在该文件中,配置3个部分内容:a) remote_servers, b) zookeeper, c)macros
a) 标明各个分片、副本信息,host、port
<internal_replication>true</internal_replication> //添加这一句,可减少distributed压力,用已有的复制表引擎分发同步数据
b) 配置zookeeper集群模式,一般是3个节点,或3个以上的奇数。用来协调多个副本、分片之间的同步,在各个节点上配置一致便于维护
c) 动态变量,类似别名,取replica和shard的名字,之后创建副本表或分布式表时引擎所需要内容,{shard}、{replica}
<macros>
<shard>01</shard>
<replica>table_01</replica>
</macros>
3.创建数据库
CREATE database data_test
4.创建两个实例 "shard 1 replica 1","shard 1 replica 2" 的副本表,需要分别在两个实例中手动建立副本表
CREATE TABLE data_test.repl_test
(
"id" String,
"price" Float64,
"create_time" DateTime
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/01/repl_test','table_01')
PARTITION BY toYYYYMM(create_time)
ORDER BY id
CREATE TABLE data_test.repl_test
(
"id" String,
"price" Float64,
"create_time" DateTime
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/01/repl_test','table_02')
PARTITION BY toYYYYMM(create_time)
ORDER BY id
//这里可以利用动态变量,使用一样的zk路径('/clickhouse/tables/{shard}/repl_test','{replica}'
//副本是表级别
//完成后就可在其中一个节点插入数据,在另一个节点能查到数据
5.创建用于分布式存储的数据表
CREATE TABLE data_test.repl_abc on cluster ck_cluster
(
`id` String,
`price` Float64,
`create_time` DateTime
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/repl_abc','{replica}')
PARTITION BY toYYYYMM(create_time)
ORDER BY id
//ck_cluster 集群名字
//集群上每个实例上都成功创建了该表,同一个分片的zk路径一致,副本名不同
6.创建Distributed引擎分布式表
CREATE TABLE data_test.repl_abc_all on cluster ck_cluster
(
`id` String,
`price` Float64,
`create_time` DateTime
)
ENGINE = Distributed('ck_cluster','data_test','repl_abc', rand())
//ck_cluster 集群名字,xuan_test 数据库名字,repl_abc 表名,rand()按照随机数拆分
//集群上每个实例上成功创建了该视图表,其自身不存储数据
7.创建完成后,在任意节点向该表 repl_abc_all 插入数据,即可在各个节点的该视图中查看全部数据,也可在各自节点数据中查看被分配到的部分数据(主要是将数据随机分给了两个分片),各分片中的副本数据是一致的
参考文章,写的比较仔细,建议阅读
更多推荐
所有评论(0)