原文链接:https://www.gbase.cn/community/post/4199
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
1 概述
1.1.背景
本项目针对政府某局级部门的版本升级方案。该项目已稳定上线运行。本项目数据量不大,本次版本升级主要是解决版本上的几个已知问题。升级前后大版本号均为V952,小版本号从952.29升级至952.42。本文主要介绍升级背景以及预计升级所需要的时间;同时对可能遇到的升级失败问题,制定了集群回退预案。
本文涉及到的评估数据均为结合现场硬件配置,业务场景、数据量等多个角度,结合最优实践提供升级方案。
1.2.预估升级时间
升级各阶段预估时间如下表,建议准备更充足的时间,其中“集群回退”部分,如果升级顺利完成则不需要。
升级阶段 | 预估时间 |
升级前检查 | 0.5小时 |
数据备份 | 1小时 |
执行升级 | 0.5小时 |
升级后验证 | 0.5小时 |
恢复业务 | 0.5小时 |
集群回退(如升级失败) | 2小时 |
2.升级步骤
具体介绍升级过程中的每一步操作。总体步骤:
1.升级前检查
2.停集群
3.数据备份
4.执行升级
5.升级后验证
2.1.升级前检查
2.1.1.记录集群版本信息
记录现有集群各组件的版本号,后面用于升级后的对比。
检查项 | 命令 | 升级前 | 升级后 |
gclusterd | /data/gbase8a/gcluster/server/bin/gclusterd -V | ver 9.5.2.29.123209 for pc-linux-gnu on x86_64 | |
gbased | /data/gbase8a/gnode/server/bin/gbased -V | ver 9.5.2.29.123209 for pc-linux-gnu on x86_64 | |
gcadmin | gcadmin -V | gcadmin 9.5 build Unversioned directory | |
show version | gccli | GBase client 9.5.2.29.123209 |
2.1.2.主要表数据记录
巡检日期:XXX
巡检时间:XXX
... ...
======================重点表检查======================
重点表1
重点表2
... ...
2.2.数据备份
为防止升级出现意外,要在升级前进行数据备份,采用操作系统文件级备份的方法。
2.2.1.检查集群任务
由于8a集群节点众多,为方便管理,在8a集群n1节点上安装并配置C3工具,方便运维管理,C3工具可以实现在一个节点上操作linux命令,能分发到8a集群所有节点执行分发命令,并将执行结果反馈给发起节点,这样DBA就不必连接每一个节点去操作了。
用户:gbase
服务器:集群n1节点
命令:
[gbase@MPP1 ~]$ cexec coor: 'gccli -uroot -p...... -e"show processlist" | grep -v Sleep'
注:cexec 是C3工具的命令, 是以并行方式调用linux的命令工具,可以在所有节点上运行任何linux的命令
coor:是C3配置文件中的集群名字,这里代表coordinator管理集群
2.2.2.停集群
用户:gbase
服务器:集群n1节点
命令:
cexec "gcluster_services all stop"
2.2.3.各节点备份数据
用户:root
服务器:集群n1
cexec coor: "cp -a /data/gbase8a/gcware/ /data/back8a/20210716/ "
nohup cexec "cp -a /data/gbase8a/gcluster/ /data/back8a/20210716/" &
nohup cexec "cp -a /data/gbase8a/gnode/ /data/back8a/20210716/ " &
备份后检查备份目录:
cexec “du -sh /data/back8a/20210716/*”
2.3.执行升级
在确认各项检查都通过后,开始执行升级操作。
2.3.1.升级GBase 8a集群
服务器:n1节点
用户:gbase
命令:
cd gcinstall
一定注意要加 -U 参数
./gcinstall.py -U --silent=demo.options
2.3.2.修改gbase用户密码
由于V952.XXX版本升级后,做了密码增强功能,升级后gbase用户密码会置为默认密码,故此升级后需要根据项目或客户要求,按需修改gbase用户密码。
2.4.升级后验证
升级后进行版本、功能的验证。
2.4.1.集群版本确认
完成“升级前检查”中“记录集群版本信息”的表格,增加升级后的版本信息。
2.4.2.验证DDL、DML
create table tt1(id int, name varchar(100), birthday date, InputDate datetime,salary decimal(18,3));
insert into tt1 values(1,'赵ABC','2000-01-02','2015-06-03 12:13:14',12345.678);
Update tt1 set name='赵ABC赵ABC' where id=1;
select * from tt1 where 1=1;
3.回退方案
当集群升级无法完成或者升级后不能使用时,通过本步骤还原到老版本。
3.1.回退条件
版本升级工作未能及时完成,影响到第二天的业务执行;
升级后验证未通过;
出现其他严重的问题;
3.2.停止所有业务
停止所有业务,Kill掉新版本的加载服务,准备回退。
3.3.集群回退方案
3.3.1.回退方案一
当用户需要进行GBase 8a MPP Cluster 的版本回退时,需要在安装包中找到Restore.py 脚本,该脚本在gcinstall/下,使用DBA 用户执行。
Restore.py 后面需要跟随2 个参数,其中:
backupFile:执行升级脚本后,系统会生成backup 文件。
rootPwd:为节点机器root 密码,例如示例中的111111。
Restore.py 的运行示例如下:
python Restore.py --backupFile=/home/gbase/gcluster_backup_201808xxxxxxxx.tar.bz2 --rootPwd=111111
3.3.2.回退方案二
1)停止集群:cexec "gcluster_services all stop"
2)卸载新版集群(gbase用户)
./unInstall.py --silent=demo.options
3)重装旧版集群
gbase用户,进入老版本安装目录
./gcinstall.py --silent=demo.options
4)停止集群:cexec "gcluster_services all stop"
5)恢复数据:
cexec "rm -rf /data/gbase8a/gcluster/"
cexec "mv /data/back8a/20210716/gcluster/ /data/gbase8a/ "
cexec "rm -rf /data/gbase8a/gnode"
cexec "mv /data/back8a/20210716/gnode/ /data/gbase8a/ "
cexec "rm -rf /data/gbase8a/gcware"
cexec "mv /data/back8a/20210716/gcware/ /data/gbase8a/ "
6)启动集群:cexec "gcluster_services all start"
3.4.集群回退后验证
参照“升级后验证”部分,进行回退后的验证。
以上为此项目的升级回退方案介绍,希望能指导大家完成相应的升级回退操作。
原文链接:https://www.gbase.cn/community/post/4199
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。