clickhouse 简单集群搭建
搭建步骤总结
1.安装软件
2.环境修改
3.配置修改,重启服务器载入配置
4.每台服务器执行初始化脚本
详细搭建说明
服务器列表
IP | 本地域名 |
---|---|
192.168.2.151 | ch1.cttic.cn |
192.168.2.153 | ch3.cttic.cn |
192.168.2.41 | ch7.cttic.cn |
集群搭建
软件离线安装
请查看博文
配置修改
metrika.xml文件
#该配置复制到/etc/目录下,clickhouse启动的时候会自动读取
<yandex>
<!--自定义配置名,与config.xml配置的incl属性对应即可 -->
<clickhouse_remote_servers>
<ch_cluster> #集群名称
<node>
<host>ch3.cttic.cn</host>
<port>9000</port>
</node>
<node>
<host>ch1.cttic.cn</host>
<port>9000</port>
</node>
<node>
<host>ch7.cttic.cn</host>
<port>9000</port>
</node>
</ch_cluster>
</clickhouse_remote_servers>
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>
config.xml
#vi /etc/clickhouse-server/config.xml
#配置太多,已省略无改动配置
...
#配置监听端口,不然其他机器访问不了
<listen_host>::1</listen_host>
<listen_host>0.0.0.0</listen_host>
...
#修改数据存储目录
<path>/data/ch/data/</path>
#修改临时存储目录
<tmp_path>/data/ch/tmp/</tmp_path>
...
<remote_servers incl="clickhouse_remote_servers" >
#移除这里的所有内容
</remote_servers>
...
环境修改
1.关闭防火墙或者开放clickhouse使用的所有端口(8123,9000等)
2.各个服务器的/etc/hosts文件都需要添加对应的本地域名
#vi /etc/hosts,添加本地域名
...
192.168.2.151 ch1.cttic.cn
192.168.2.153 ch3.cttic.cn
192.168.2.41 ch7.cttic.cn
...
初始化脚本
CREATE TABLE IF NOT EXISTS testDB.test_data_local (
create_time Datetime,
...
) ENGINE = MergeTree()
ORDER BY (...)
PARTITION BY toDate(create_time); #按天分区存储
#分布式引擎参数:配置文件中的集群名,远程数据库名,远程表名,数据分片键
#配置文件中的集群名和metrika.xml定义的集群名称必须对应
CREATE TABLE testDB.test_data_all AS testDB.test_data_local
ENGINE = Distributed(ch_cluster,testDB,test_data_local,rand());
重启服务
clickhouse restart
验证结果
clickhouse-client --query "SELECT * FROM system.clusters"
#应该会有以下输出
ch_cluster 1 1 1 ch3.cttic.cn 192.168.2.153 9000 0 default 0 0
ch_cluster 2 1 1 ch1.cttic.cn 192.168.2.151 9000 0 default 0 0
ch_cluster 3 1 1 ch7.cttic.cn 192.168.2.41 9000 1 default 0 0
注意事项
必须要集群所有服务器都执行了初始化脚本之后,才可以进行查询或者写入操作,不然会提示以下错误
Code: 210, e.displayText() = DB::NetException: Connection refused (ch3.cttic.cn:9000) (version 20.9.2.20 (official build))
遇到的问题
- 网上的都是通过service clickhouse stop/start命令,但是在我测试里面无效每次执行都只是提示 Init script is already running,然后没其他动静,不知道是不是版本差异导致的