安装zookeeper1.1集群.note,三台服务器先按照单机部署方式1.0单机部署.note
clickhouse集群搭建详细步骤_dnice的博客-CSDN博客_clickhouse集群搭建
# 备份
cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config_bak.xml
----------- 方式一 -----------
# 三台服务器同样的操作
vim /etc/clickhouse-server/config.xml
# 找到 remote_servers 标签
<remote_servers>
<cluster_01> <!-- clickhouse显示名称 可以自己修改 -->
<shard> <!-- 一分片 -->
<internal_replication>true</internal_replication> <!-- 是否开启自动复制 -->
<replica> <!-- 副本 -->
<host>192.168.125.167</host> <!--指定部署了ClickHouse节点的服务器地址-->
<port>9000</port> <!--指定ClickHouse服务的TCP端口-->
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication> <!-- 是否开启自动复制 -->
<replica> <!-- 副本 -->
<host>192.168.125.168</host> <!--指定部署了ClickHouse节点的服务器地址-->
<port>9000</port> <!--指定ClickHouse服务的TCP端口-->
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication> <!-- 是否开启自动复制 -->
<replica> <!-- 副本 -->
<host>192.168.125.169</host> <!--指定部署了ClickHouse节点的服务器地址-->
<port>9000</port> <!--指定ClickHouse服务的TCP端口-->
</replica>
</shard>
</cluster_01>
</remote_servers>
# 找到 zookeeper
<zookeeper>
<node>
<host>192.168.125.167</host>
<port>2181</port>
</node>
<node>
<host>192.168.125.168</host>
<port>2181</port>
</node>
<node>
<host>192.168.125.169</host>
<port>2181</port>
</node>
</zookeeper>
----------- 方式二 -----------
# 三台服务器同样的操作
# 新建metrika.xml 文件
vim /etc/clickhouse-server/metrika.xml
<?xml version="1.0"?>
<clickhouse>
<clickhouse_remote_servers> <!-- 集群设置 -->
<cluster_01> <!-- clickhouse显示名称 可以自己修改 -->
<shard> <!-- 一分片 -->
<internal_replication>true</internal_replication> <!-- 是否开启自动复制 -->
<replica> <!-- 副本 -->
<host>192.168.125.167</host> <!--指定部署了ClickHouse节点的服务器地址-->
<port>9000</port> <!--指定ClickHouse服务的TCP端口-->
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication> <!-- 是否开启自动复制 -->
<replica> <!-- 副本 -->
<host>192.168.125.168</host> <!--指定部署了ClickHouse节点的服务器地址-->
<port>9000</port> <!--指定ClickHouse服务的TCP端口-->
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication> <!-- 是否开启自动复制 -->
<replica> <!-- 副本 -->
<host>192.168.125.169</host> <!--指定部署了ClickHouse节点的服务器地址-->
<port>9000</port> <!--指定ClickHouse服务的TCP端口-->
</replica>
</shard>
</cluster_01>
</clickhouse_remote_servers>
<macros>
<shard>3</shard> <!--分片编号不能重复 如果是副本要相同-->
<replica>192.168.125.169</replica> <!--副本名称,创建复制表时有用,每个节点不同,整个集群唯一,建议使用主机名-->
</macros>
<!-- zookeeper 配置 集群高可用 -->
<zookeeper-servers>
<node>
<host>192.168.125.167</host>
<port>2181</port>
</node>
<node>
<host>192.168.125.168</host>
<port>2181</port>
</node>
<node>
<host>192.168.125.169</host>
<port>2181</port>
</node>
</zookeeper-servers>
</clickhouse>
根节点必须是clickhouse(新版)或yarn(旧版)
注意:macros每台机器不同
vim /etc/clickhouse-server/config.xml
# 找到 remote_server 原标签删除后添加如下四行
# 如果不删除 remote_server 原标签,那么四行内容放到remote_server 原标签前面
<remote_servers incl="clickhouse_remote_servers" />
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
# 重启服务
systemctl restart clickhouse-server
systemctl status clickhouse-server
clickhouse-client
# 测试集群情况
select * from system.clusters
创建本地表,实际存储数据的位置
# 创建本地表,注意集群名字
CREATE TABLE enic_test_local ON CLUSTER cluster_01 (
id Int16,
name String,
birth Date
)ENGINE = MergeTree()
PARTITION BY toYYYYMM(birth)
ORDER BY id;
insert into enic_test_local values(1, 'test1', '2022-02-01'), (2, 'test2', '2022-03-01'), (3, 'test3', '2022-04-01');
select * from enic_test_local;
DROP TABLE enic_test_local ON CLUSTER cluster_01;
创建分布式表,查看聚合以后的数据
CREATE TABLE enic_test ON CLUSTER cluster_01
engine = Distributed(cluster_01 , default, enic_test_local,rand());
insert into enic_test values(1, 'test1', '2022-02-01'), (2, 'test2', '2022-03-01'), (3, 'test3', '2022-04-01');
select * from enic_test;
DROP TABLE enic_test ON CLUSTER cluster_01;