闲聊

上章提到clickhouse版本更新迭代较快,bug较多。
以上篇文章20.8为例

项目中有用到clickhouse20.8来实时同步mysql8.13的数据,但是同步过去的表正常查询数据 插入数据都没有问题,遇到复杂查询(嵌套,运算,聚合)就会报错,在网上找了好多方法,最后才发现是clickhouse版本的问题,clickhouse官网文档在新的版本也有修复。

类似这一个sql,好像也不支持用in来嵌套

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
generateUUIDv4() as ukey,
apiName,
toStartOfDay(toDateTime(timestamp / 1000)) AS time,
count(apiName) AS num
from
audit.http_stripped_event
where
apiName in (
SELECT
data_val
from
data_dataTransfer_ch.t_task_check_field_data
where
task_id = '796D82C8-CB64-41AC-84EE-9D292880FEBC'
and data_version = 0)
GROUP BY
apiName,
time;

1
2
3
4
5
6
centos7836 :) select * from data_dataTransfer_ch_test.t_task_check_field_data;
SELECT *
FROM data_dataTransfer_ch_test.t_task_check_field_data
Received exception from server (version 20.8.3):
Code: 32. DB::Exception: Received from 192.168.78.36:9000. DB::Exception: Attempt to read after eof.
0 rows in set. Elapsed: 0.405 sec.

在这里插入图片描述
然后就将我的clickhouse进行了升级,以下是操作

clickhouse升级最新版21.6.6

以我们项目为例,整理下ClickHouse升级的相关注意事项,由于鄙人学识浅薄,提供的方式方法仅供大家参考,引起的任何问题,本人不承担任何责任。安全生产第一条:记得备份、记得备份、记得备份,重要的事情说三遍。

我们ClickHouse是通过RPM方式来安装的,包括如下三个文件:

1
2
3
4
5
[root@k8s-master repo]# ll
total 159984
-rw-r--r-- 1 root root 62996 Jul 4 20:34 clickhouse-client-21.6.6.51-2.noarch.rpm
-rw-r--r-- 1 root root 163667677 Jul 4 20:34 clickhouse-common-static-21.6.6.51-2.x86_64.rpm
-rw-r--r-- 1 root root 87450 Jul 4 20:34 clickhouse-server-21.6.6.51-2.noarch.rpm

备份

1、备份配置文件

路径为:/etc/clickhouse-server,把这个文件夹下面都备份吧,正常安装新版本,clickhouse会自动将之前的配置文件config.xml备份,命名为:config.xml.rpmsave。不过小心使得万年船。

2、备份数据文件

数据文件的路径是在config.xml中进行配置的,我们配置指向一块单独的盘。
在这里插入图片描述总而言之,言而总之,把整个数据文件备份吧。

卸载旧版本

1、查看目前安装版本

yum list installed | grep clickhouse

2、删除软件版本

yum remove -y clickhouse-common-static

yum remove -y clickhouse-server-common

安装新版本

rpm包下载地址:https://repo.clickhouse.tech/rpm/stable/x86_64/
下载完成之后直接

1
rpm -ivh *.rpm

安装成功后,会在/etc/clickhouse-server下生产相应的配置文件。

按照旧的config.xml配置信息,更改config.xml。也可先直接覆盖,如果后续不成功,还是一条一条来修改,最好比对下。防止有小版本差异。

新版本clickhouse由systemd控制
重启服务验证功能

1
systemctl start clickhouse-server