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

遇到的问题

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

参考链接

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

猜你喜欢

转载自blog.csdn.net/qq_38189542/article/details/108868298