ClickHouse相关安装包下载地址:安装包
分享个我下载好的安装包集合:
链接:https://pan.baidu.com/s/1Ela94sWBEnzDmDwS4FvVZg
提取码:yw9p
ClickHouse集群依赖Zookeeper集群,安装前确保Zookeeper集群正常。
1、配置hosts
修改所有节点的hosts,拿我的3个节点举例:
服务器之间最好配置好免密登录,确保端口开放正常,或者关闭防火墙。
vim /etc/hosts
在121.41.1.91配置为:
127.0.0.1 ck_node1
121.41.1.91 ck_node1
121.41.1.92 ck_node2
121.41.1.93 ck_node3
在121.41.1.92配置为:
127.0.0.1 ck_node2
121.41.1.91 ck_node1
121.41.1.92 ck_node2
121.41.1.93 ck_node3
在121.41.1.93配置为:
127.0.0.1 ck_node3
121.41.1.91 ck_node1
121.41.1.92 ck_node2
121.41.1.93 ck_node3
2、上传安装包到服务器
依次安装
rpm -ivh clickhouse-server-common-19.16.14.65-1.el7.x86_64.rpm
rpm -ivh clickhouse-common-static-19.16.14.65-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-19.16.14.65-1.el7.x86_64.rpm
#rpm -ivh clickhouse-debuginfo-19.16.14.65-1.el7.x86_64.rpm
#rpm -ivh clickhouse-test-19.16.14.65-1.el7.x86_64.rpm
rpm -ivh clickhouse-client-19.16.14.65-1.el7.x86_64.rpm
如果报错
Start clickhouse-server service: /usr/bin/clickhouse-extract-from-config: error while loading shared libraries: libicui18n.so.42: cannot open shared object file: No such file or directoryCannot obtain value of path from config file: /etc/clickhouse-server/config.xml
则需要安装libicu相关包:
libicu-4.2.1-14.el6.x86_64.rpm
libicu-devel-4.2.1-14.el6.x86_64.rpm
3、修改配置文件
初始配置文件位置:
users.xml,所有节点一样
<?xml version="1.0"?>
<yandex>
<!-- Profiles of settings. -->
<profiles>
<!-- Default settings. -->
<default>
<!-- Maximum memory usage for processing single query, in bytes. -->
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</default>
<!-- Profile that allows only read queries. -->
<readonly>
<readonly>1</readonly>
</readonly>
</profiles>
<!-- Users and ACL. -->
<users>
<default>
<!--密码,最好设置为密文 -->
<password>db@123</password>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<!-- Settings profile for user. -->
<profile>default</profile>
<!-- Quota for user. -->
<quota>default</quota>
<!-- For testing the table filters -->
<databases>
<test>
<!-- Simple expression filter -->
<filtered_table1>
<filter>a = 1</filter>
</filtered_table1>
<!-- Complex expression filter -->
<filtered_table2>
<filter>a + b < 1 or c - d > 5</filter>
</filtered_table2>
<!-- Filter with ALIAS column -->
<filtered_table3>
<filter>c = 1</filter>
</filtered_table3>
</test>
</databases>
</default>
</users>
<!-- Quotas. -->
<quotas>
<!-- Name of quota. -->
<default>
<!-- Limits for time interval. You could specify many intervals with different limits. -->
<interval>
<!-- Length of interval. -->
<duration>3600</duration>
<!-- No limits. Just calculate resource usage for time interval. -->
<queries>0</queries>
<errors>0</errors>
<result_rows>0</result_rows>
<read_rows>0</read_rows>
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
</yandex>
config.xml比较长,就不贴全文了
每个节点的配置一样的部分:
<listen_host>::</listen_host>
<!--不限制访问来源ip地址-->
<networks>
<ip>::/0</ip>
</networks>
<!--设置时区-->
<timezone>Asia/Shanghai</timezone>
<!--设置ZK节点-->
<zookeeper>
<node index="1">
<host>ck_node1</host>
<port>2181</port>
</node>
<node index="2">
<host>ck_node2</host>
<port>2181</port>
</node>
<node index="3">
<host>ck_node3</host>
<port>2181</port>
</node>
</zookeeper>
<!--集群信息,ck_cluster_1为集群名称-->
<remote_servers>
<ck_cluster_1>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>ck_node1</host>
<port>9000</port>
<user>default</user>
<password>db@123</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>ck_node2</host>
<port>9000</port>
<user>default</user>
<password>db@123</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>ck_node3</host>
<port>9000</port>
<user>default</user>
<password>db@123</password>
</replica>
</shard>
</ck_cluster_1>
</remote_servers>
<compression incl="clickhouse_compression">
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>zstd</method>
</case>
</compression>
<!--日志,方便排查错误-->
<logger>
<level>trace</level>
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
<size>1000M</size>
<count>10</count>
</logger>
每个节点的配置不一样的部分,主要是方便建表的时候使用一些宏变量。
ck_node1
<macros>
<layer>01</layer>
<shard>01</shard>
<replica>01-01-1</replica>
</macros>
ck_node2
<macros>
<layer>02</layer>
<shard>01</shard>
<replica>02-02-1</replica>
</macros>
ck_node3
<macros>
<layer>03</layer>
<shard>01</shard>
<replica>03-03-1</replica>
</macros>
比如建复制表使用宏变量{shard},{replica}:
CREATE TABLE IF NOT EXISTS cola.ip_session_merge_local ON CLUSTER ‘ck_cluster_1’ (ts_date Date,ts_date_time DateTime,user_id Int64,event_type String,site_id Int64,groupon_id Int64, category_id Int64, merchandise_id Int64, search_text String )ENGINE = ReplicatedMergeTree(‘/clickhouse/tables/{shard}/cola/ip_session_merge’,‘{replica}’)PARTITION BY ts_date ORDER BY (ts_date_time,site_id,event_type) SETTINGS index_granularity = 8192;
4、启动服务
service clickhouse-server start //启动
service clickhouse-server stop
service clickhouse-server restart
systemctl status clickhouse-server
clickhouse-client -m -h 127.0.0.1 --password
select * from system.clusters;