clickhouse 简单集群搭建
- 搭建步骤总结
- 详细搭建说明
-
- 服务器列表
- 集群搭建
-
- 软件离线安装
- 配置修改
-
- metrika.xml文件
- config.xml
- 环境修改
- 初始化脚本
- 重启服务
- 验证结果
- 注意事项
- 遇到的问题
- 参考链接
搭建步骤总结
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,然后没其他动静,不知道是不是版本差异导致的
参考链接
分布式表引擎
配置文件
参考文章