华为openEuler 22.03 (LTS-SP3) 手动安装单点clickhouse
客户的服务器,都在内网,需要登录堡垒机进入,但是不支持从源拉取,所以只能手动安装clickhouse。
因为本地开发用的是25.8.2.29版本。
所以到https://packages.clickhouse.com/rpm/官网下载了clickhouse-common-static-25.8.2.29.aarch64.rpm、clickhouse-server-25.8.2.29.aarch64.rpm、clickhouse-client-sudo rpm -ivh .aarch64.rpm这三个文件,官网的版本很多,只能分页找。

然后通过堡垒机上传上去了,开始安装
sudo rpm -ivh clickhouse-common-static-25.8.2.29.aarch64.rpm
sudo rpm -ivh clickhouse-server-25.8.2.29.aarch64.rpm
sudo rpm -ivh clickhouse-client-25.8.2.29.aarch64.rpm 
common-static安装成功,但是安装server的时候,报了非法指令,查询之后觉得是客户的arm机器有点老,某些指令不支持。
[root@whm-test-ecs-1 clickhouse]# ll
total 176588
-rw-r--r-- 1 root root    100656 Nov  3 11:18 clickhouse-client-25.8.2.29.aarch64.rpm
-rw-r--r-- 1 root root 180591946 Nov  3 11:22 clickhouse-common-static-25.8.2.29.aarch64.rpm
-rw-r--r-- 1 root root    130719 Nov  3 11:18 clickhouse-server-25.8.2.29.aarch64.rpm
[root@whm-test-ecs-1 clickhouse]# sudo rpm -ivh clickhouse-common-static-25.8.2.29.aarch64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...1:clickhouse-common-static-0:25.8.2################################# [100%]
[root@whm-test-ecs-1 clickhouse]# sudo rpm -ivh clickhouse-server-25.8.2.29.aarch64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...1:clickhouse-server-0:25.8.2.29-1  ################################# [100%]
/var/tmp/rpm-tmp.1jXbMg: line 66: 109456 Illegal instruction     (core dumped) ${CLICKHOUSE_GENERIC_PROGRAM} install --user "${CLICKHOUSE_USER}" --group "${CLICKHOUSE_GROUP}" --pid-path "${CLICKHOUSE_PIDDIR}" --config-path "${CLICKHOUSE_CONFDIR}" --binary-path "${CLICKHOUSE_BINDIR}" --log-path "${CLICKHOUSE_LOGDIR}" --data-path "${CLICKHOUSE_DATADIR}"
warning: %post(clickhouse-server-0:25.8.2.29-1.aarch64) scriptlet failed, exit status 132 
所以25.8.2.29安装失败。
于是降了版本,又下载了23.3.10.5。
然后还是上传上去安装,依次运行都成功了。
cd /tmp/clickhouse
sudo rpm -ivh clickhouse-common-static-23.3.10.5.aarch64.rpm
sudo rpm -ivh clickhouse-server-23.3.10.5.aarch64.rpm
sudo rpm -ivh clickhouse-client-23.3.10.5.aarch64.rpm 
然后查看是否安装成功,安装server的时候会问我们要密码,想输就输入一个,不想就空着,但是回头远程连接的时候还是需要的,所以最好配置一个。
# 启动服务
sudo systemctl start clickhouse-server# 查看服务状态(确保是 active (running))
sudo systemctl status clickhouse-server# 用客户端连接(问我们要密码就输入)
clickhouse-client# 查看版本(确认安装成功)
SELECT version(); 
安装成功了之后,我们还是需要修改配置文件
# 给文件添加 root 写入权限(所有者保留读,其他用户无权限)
sudo chmod 600 /etc/clickhouse-server/config.xmlsudo vim /etc/clickhouse-server/config.xml 
首先是listen_host改成0.0.0.0,允许远程连接,然后我关闭了ipv6。
<!-- 允许所有 IPv4 和 IPv6 地址连接(生产环境建议限制 K8s 节点的 IP 段) -->
<listen_host>0.0.0.0</listen_host>  <!-- 允许 IPv4 远程连接 --><!--开启后也许会报端口被占用,如果是这样可以注释掉-->
<!--<listen_host>::</listen_host>-->        <!-- 允许 IPv6 远程连接(可选) --> 
然后网上说要需要修改下面的文件,主要是密码和远程连接,但是我都没修改,我觉得应该不需要(个人意见)。
sudo chmod 600 /etc/clickhouse-server/users.xmlsudo vim /etc/clickhouse-server/users.xml 
然后重启clickhouse
sudo systemctl stop clickhouse-server
sudo systemctl restart clickhouse-server 
然后查看端口占用
sudo ss -tulpn | grep clickhouse 
出现类似这样的占用,说明ipv4绑定都成功了。
[root@whm-test-ecs-1 clickhouse]# sudo ss -tulpn | grep clickhouse
tcp   LISTEN 0      4096                            0.0.0.0:8123       0.0.0.0:*    users:(("clickhouse-serv",pid=135609,fd=38))
tcp   LISTEN 0      4096                            0.0.0.0:9000       0.0.0.0:*    users:(("clickhouse-serv",pid=135609,fd=39))
tcp   LISTEN 0      4096                            0.0.0.0:9004       0.0.0.0:*    users:(("clickhouse-serv",pid=135609,fd=40))
tcp   LISTEN 0      4096                            0.0.0.0:9005       0.0.0.0:*    users:(("clickhouse-serv",pid=135609,fd=35))
tcp   LISTEN 0      4096                            0.0.0.0:9009       0.0.0.0:*    users:(("clickhouse-serv",pid=135609,fd=41)) 
然后我们就可以连接数据库了,输入clickhouse-client,输入密码进入之后就可以创建数据库了。
-- 创建数据库(例如名为 my_db)
CREATE DATABASE IF NOT EXISTS my_db;-- 切换到该数据库
USE my_db;-- 创建表
CREATE TABLE my_db.my_table
(`region_id` UInt64,`project_id` UInt64,`warehouse_id` UInt64,`material_id` UInt64,`quantity` Decimal(18, 2),`flow_type` String,`flow_time` DateTime,`created_at` DateTime DEFAULT now(),`unit_price` Decimal(18, 2) DEFAULT 0,`amount` Decimal(18, 2) DEFAULT 0,`category_id_level1` UInt64 DEFAULT 0 COMMENT '一级分类ID',`category_id_level2` UInt64 DEFAULT 0 COMMENT '二级分类ID',`category_id_level3` UInt64 DEFAULT 0 COMMENT '三级分类ID'
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(flow_time)
ORDER BY (flow_time,region_id,project_id,warehouse_id,material_id)
SETTINGS index_granularity = 8192; -- 查看当前数据库的表
SHOW TABLES;-- 查看表结构
DESCRIBE TABLE user_events; 
至此安装完成,后续我是使用java微服务进行连接,mysql是主数据源,clickhouse是第二个数据库,经过测试连接也是成功的,可以写入数据。
pom.xml
        <!-- ClickHouse JDBC Driver --><dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.4.6</version></dependency><!-- ClickHouse HTTP Client --><dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-http-client</artifactId><version>0.4.6</version></dependency> 
nacos中的配置
    # ClickHouse数据源配置(作为第二个数据源)clickhouse:type: com.alibaba.druid.pool.DruidDataSource  # 通常也使用Druid连接池driver-class-name: com.clickhouse.jdbc.ClickHouseDriver  # 需要指定ClickHouse驱动url: jdbc:clickhouse://你得ip:8123/wms_basicusername: defaultpassword: 你得密码# 连接池配置validation-query: SELECT 1initial-size: 5min-idle: 5max-active: 20max-wait: 60000# 其他特定配置connection-properties:compress: 0compress_algorithm: none 
