当前位置: 代码迷 >> 综合 >> clickhouse 简单集群搭建
  详细解决方案

clickhouse 简单集群搭建

热度:83   发布时间:2023-12-12 20:18:18.0

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))

遇到的问题

  1. 网上的都是通过service clickhouse stop/start命令,但是在我测试里面无效每次执行都只是提示 Init script is already running,然后没其他动静,不知道是不是版本差异导致的

参考链接

分布式表引擎
配置文件
参考文章

  相关解决方案