升级背景
运行中的clickhouse版本为23.3.2.37,在对接新的业务过程中,发现新版本的可刷新物化视图等功能,因此在团队讨论后,基于功能需要决定进行版本升级,升级到25.3.3.42。
系统架构
操作系统:redhat 6.5
集群节点:6个
备份节点:2个
keeper节点:4个
准备工作
1. 下载升级版本的安装包
lts:packages.clickhouse.com/tgz/lts/
stable:packages.clickhouse.com/tgz/stable/
我们选择的是LTS版本的安装包
找到以下文件,并下载
2. 将安装包上传提前到每台服务器
3. 备份配置文件
提前将每台服务器上的/etc/clickhouse-server的配置文件进行备份,防止升级过程出现意外(虽然不会被覆盖)。我们采取的svn进行版本管理,这个在安装升级包后,进行配置文件的修改对比非常方便。
4.提前修改好每台服务器上的配置文件
因为我们的个性配置都是在另外的metrika.xml文件,在config.xml文件进行引入。因此可以只需要修改对比一份新的config.xml文件,然后覆盖其他的即可。
实际测试环境安装时,修改配置文件是一件麻烦事,因此建议生产环境升级,提前修改好,可以省去甚多时间
升级过程
1.暂停所有的数据写入
升级前,需要将所有的写入都停止,避免升级过程中、服务重启中导致数据写入失败,或者其他异常
2.安装升级文件
进入安装包文件,执行下面的升级命令
rpm -Uvh clickhouse-common-static-25.3.3.42.x86_64.rpm clickhouse-server-25.3.3.42.x86_64.rpm clickhouse-client-25.3.3.42.x86_64.rpm
3.重启服务
systemctl restart clickhouse-server.service
systemctl status clickhouse-server.service
4.逐台修改配置文件
将修改后的配置文件上传到clickhouse-server对应位置(上传后,自动使用新的配置文件运行)
5、配置文件赋权
可能出现文件权限问题导致报错
cd /etc/clickhouse-server/
chown clickhouse:clickhouse /etc/clickhouse-server/metrika.xml
cd /etc
chown -R clickhouse:clickhouse clickhouse-*
6.查看日志
cd /var/log/clickhouse-server/
tail -200f clickhouse-server.err.log
升级后测试方案
1.测试各节点连接是否正常
2.测试每台数据库的连接、数据查询、更新、删除等
升级后进行测试,主要是看版本号是否升级了、增删改查是否正常、可刷新物化视图等功能,因此执行下面的命令(根据自己的测试需求编写)
select version();
create table tmp.test on cluster dd
(`id` Int64,`plant` String,`msg` Nullable(String))ENGINE = ReplicatedMergeTree()
PARTITION BY plant
ORDER BY (id)
COMMENT '升级测试表';
INSERT INTO tmp.test (id, plant,msg) VALUES(1, '111','qqqq');
INSERT INTO tmp.test (id, plant,msg) VALUES(2, '222','qqqq');
INSERT INTO tmp.test (id, plant,msg) VALUES(3, '333','qqqq');
select * from tmp.test;
delete from tmp.test where id =1 ;
ALTER TABLE tmp.test UPDATE msg= 'ddd' where id=3;
--投影
ALTER TABLE tmp.test ADD PROJECTION prj_test
(
SELECT * ORDER BY (id )
);
create table tmp.test_view2
(
`id` Int64,`plant` String,`msg` Nullable( String ) )ENGINE = MergeTree()
PARTITION BY plant
ORDER BY (id)
COMMENT '升级测试表';
CREATE MATERIALIZED VIEW tmp.test1_mv
REFRESH EVERY 1 MINUTE to tmp.test_view2
AS SELECT id,msg FROM tmp.test;
select * from tmp.test_view2;
drop table tmp.test on cluster dsp;
3.检查应用程序的接口调用是否正常
以上测试没问题了,就可以恢复数据写入
回退降级方案
回退条件:
1、升级过程中出现无法解决问题
2、测试过程中出现影响使用的问题
回退操作(我是先停止服务,再安装的,或许可以不停止服务执行,请自己测试)
1、卸载已经安装的程序文件(验证过无法直接安装旧版,会提示有更新的版本)
2、安装当前版本( 23.3.2.37)的程序文件,并上传备份的配置文件
rpm -qa |grep clickhouse
rpm -e clickhouse-server clickhouse-client clickhouse-common-static
cd ck23.3
rpm -Uvh clickhouse-client-23.3.1.2823.x86_64.rpm clickhouse-common-static-23.3.1.2823.x86_64.rpm clickhouse-server-23.3.1.2823.x86_64.rpm
3、重启clickhouse服务,检查日志
systemctl daemon-reload
systemctl restart clickhouse-server.service
systemctl status clickhouse-server.service
4、检查增删改查操作是否正常
5、检查应用接口调用是否正常
6、恢复数据写入
评论先审后显;邮箱仅用于生成头像(MD5),不会公开显示