一、背景
23.3.13.6-lts版本支持了一些研发上所需特定,性能上较22.8.9.24有所提升。
二、升级前提
1)升级clickhouse keeper
升级keeper的作用在于新版本支持Prometheus指标吐出,鉴于后续使用byconity,故可不升级。
2)升级clickhouse server
从官方下载所需版本的包如下:
clickhouse-client-23.3.13.6-amd64.tgz
clickhouse-common-static-23.3.13.6-amd64.tgz
clickhouse-common-static-dbg-23.3.13.6-amd64.tgz
clickhouse-server-23.3.13.6-amd64.tgz
3)升级前先使用 ps -ef |grep clickhouse 查看运行的配置文件在哪个目录,后续复制配置文件需要。
4)修改kafka engine表不允许有default 字段。
新版本做了限制,不允许kafka engine表声明 default 'xxx' 这种语法(之前旧版本放开是不正确的),如何快速去修改哪些表使用了kafka engine?
1、登录ck后 use DB_NAME,然后show tables;
2、看到表名如 xxx_kafka的则是kafka engine 表。
类似如下的则是需要修改的表结构:
三、升级clickhouse-server
1、依次解压以上提供的压缩包按以下顺序安装
安装顺序 | 包名 |
1 | clickhouse-common-static |
2 | clickhouse-common-static-dbg |
3 | clickhouse-client |
4 | clickhouse-server |
2、安装 clickhouse-common-static
一般场景中直接执行 ./install/doinst.sh 即可,但由于生产权限限制无法操作,故需要按照以下方式手工复制文件并授权
cd clickhouse-common-static-23.3.13.6
chmod 755 ./usr/* -R
sudo chown clickhouse: ./*
cp ./usr/bin/* /usr/bin/
cp ./usr/share/bash-completion/* /usr/share/bash-completion/*
3、安装 clickhouse-common-static-dbg
cd clickhouse-common-static-dbg-23.3.13.6
chmod 755 ./usr/* -R
sudo chown clickhouse: ./*
cp ./usr/lib/* /usr/lib/
4、安装 clickhouse-client
cd clickhouse-client-23.3.13.6
chmod 755 ./* -R
sudo chown clickhouse: ./*
cp ./etc/* /etc/
cp ./usr/bin/* /usr/bin/
5、安装 clickhouse-server
cd clickhouse-server-23.3.13.6
chmod 755 ./* -R
sudo chown clickhouse: ./*
cp ./etc/* /etc/
cp ./usr/bin/* /usr/bin/
# 复制systemctl 服务脚本
cp ./lib/systemd/system/clickhouse-server.service /etc/systemd/system/
# 配置开机启动
systemctl enable clickhouse-server.service
6、开始复制 clickhouse-server 的配置文件
使用 ps -ef|grep clickhouse 输出类似如下:
/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
得到 原先旧进程所在的配置文件路径:
1. 将其 config.xml 同级的 config.d中的文件复制到 /etc/clickhouse-server/config.d/下
2. 将其 config.xml 同级的 user.xml 文件复制到 /etc/clickhouse-server/ 下,覆盖旧文件。
7、开始更改数据文件夹权限
由于旧进程不一定是 clickhouse 用户启动,估按照目前标准流程使用clickhouse 启动后会有权限问题,故需要:
1、先停止旧进程 (使用ps -ef | grep clickhouse) 然后 kill。
2、查看 config.d 中的文件中设置的日志文件和数据问题目录进行授权给 clickhouse 用户。
如:
chown clickhouse: /data/ckdata -R
chown clickhouse: /data/clickhouse -R
8、尝试启动进程
先使用命令执行启动
sudo -u clickhouse /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
观察是否能正常启动,如果不能错误能立即观察到,进行相应修复。
如果正常启动,则退出后,再使用以下命令正常启动即可在后端daemon运行:
systemc restart clickhouse-server
后续观察输出日志是否正常。
注意:如果是生产环境直接操作,建议备份数据,否则建议在测试环境做一次完整测试验证后再做生产环境操作。