背景
本文主要在虚拟机中演示分布式三节点的磐维数据库的离线升级过程,希望对大家有所帮助!
环境说明
| 主机名 | ip地址 | OS版本 | 内存、CPU | 升级前数据库版本 | 升级后数据库版本 |
|---|---|---|---|---|---|
| node1 | 192.*.*.60 | Centos7.9 | 4G 、 1个双核 | V2.0_dist_S3.0.1_B01 | V2.0_dist_S3.1.0_B02 |
| node2 | 192.*.*.62 | Centos7.9 | 4G 、 1个双核 | V2.0_dist_S3.0.1_B01 | V2.0_dist_S3.1.0_B02 |
| node3 | 192.*.*.64 | Centos7.9 | 4G 、 1个双核 | V2.0_dist_S3.0.1_B01 | V2.0_dist_S3.1.0_B02 |
集群状态
+----+------------+----------------+-------+---------+--------+ | No | name | host | port | state | leader | +----+------------+----------------+-------+---------+--------+ | 0 | ha_server1 | 192.*.*.60 | 20001 | running | True | +----+------------+----------------+-------+---------+--------+ +----+------+----------------+------+----------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------------+------+----------------+---------+---------+ | 0 | gtm1 | 192.*.*.60 | 6666 | /data/gtm/gtm1 | running | standby | | 1 | gtm2 | 192.*.*.62 | 6666 | /data/gtm/gtm2 | running | primary | +----+------+----------------+------+----------------+---------+---------+ +----+------+----------------+------+-----------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------------+------+-----------------+---------+---------+ | 0 | cn1 | 192.*.*.62 | 5432 | /data/coord/cn1 | running | primary | | 1 | cn2 | 192.*.*.64 | 5432 | /data/coord/cn2 | running | primary | +----+------+----------------+------+-----------------+---------+---------+ +----+-------+-------+----------------+-------+-----------------+---------+---------+ | No | group | name | host | port | work_dir | state | role | +----+-------+-------+----------------+-------+-----------------+---------+---------+ | 0 | dn1 | dn1_1 | 192.*.*.62 | 15432 | /data/dn1/dn1_1 | running | primary | | 1 | dn1 | dn1_2 | 192.*.*.64 | 15432 | /data/dn1/dn1_2 | running | standby | | 2 | dn1 | dn1_3 | 192.*.*.60 | 15432 | /data/dn1/dn1_3 | running | standby | | 3 | dn2 | dn2_1 | 192.*.*.64 | 20010 | /data/dn2/dn2_1 | running | primary | | 4 | dn2 | dn2_2 | 192.*.*.60 | 20010 | /data/dn2/dn2_2 | running | standby | | 5 | dn2 | dn2_3 | 192.*.*.62 | 20010 | /data/dn2/dn2_3 | running | standby | +----+-------+-------+----------------+-------+-----------------+---------+---------+ +----+----------------------------+--------+---------+----------+ | No | url | name | state | isLeader | +----+----------------------------+--------+---------+----------+ | 0 | http://192.*.*.64:2379 | node_2 | healthy | False | | 1 | http://192.*.*.62:2379 | node_1 | healthy | False | | 2 | http://192.*.*.60:2379 | node_0 | healthy | True | +----+----------------------------+--------+---------+----------+
升级说明
用户根据新特性和数据库现状,确定是否对现有系统进行升级。升级应用场景:
- 离线升级。这种场景下需停止业务运行,在完成整体版本升级后再启动。
- 平滑升级。这种升级场景对业务影响较小,但需要技术人员根据部署情况制定升级计划。原则是:先升级备节点,在触发倒换后升级原主(当前的备节点),依次升级。
注意事项:
- 升级操作不能和扩容、缩容同时执行。
- 建议在数据库系统空闲情况下进行升级,尽量避开业务繁忙的时间段(可按照经验判断,如节假日等)。
- 升级前尽可能保证数据库正常。可以通过 ha_ctl monitor 命令查询,查询节点状态均为 running 代表数据库正常。
- 升级前保证数据库互信正常。可以在任意节点上,通过 ssh host 命令,连接另外一个节点进行验证。如果各机器间互连不用输入密码,说明互信正常。
- 升级前保证操作系统处于健康状态。通过 ha_preinstall 工具进行操作系统状态检查。
- 执行升级的过程中请不要手动设置 GUC 参数。
- 升级时使用待升级版本的 ha_ctl 工具;回滚时使用待回退版本的 ha_ctl 工具。
- 升级/回滚前先执行 ha_ctl prepare。
升级
完整的升级流程包括前置操作、升级操作、升级验证、升级失败回退。
前置操作
在正式执行升级前检查服务器及数据库状态:
(1) 检查操作系统状态
以 omm 用户身份执行:ha_preinstall -i A,状态为 Normal 表示操作系统状态正常。
(2) 检查集群状态
以 omm 用户身份执行:ha_ctl monitor all -c cluster_name -l dcslist,查询节点状态均为running 表示集群状态正常。
(3) 检查数据库互信
在任意节点上执行 ssh host 命令,连接其他节点进行验证。如果各机器间互连不用输入密码,说明互信正常。
(4) 查看数据库大小
登录数据库,执行\l+,查看 Size 列数值。
(5) (建议)数据备份,谨防操作不当或机房故障而造成数据丢失。
升级操作
离线升级
(1) 创建升级目录,并将升级版本的安装包放在升级目录下。该目录可由用户自行指定,omm 用户具有该目录权限。以/opt/panweidb 为例。
su - root
mkdir -p /opt/panweidb
chown -R omm:dbgrp /opt/panweidb
su - omm
cd /opt/panweidb/
(2) 解压安装包。
tar -zxf PanWeiDB_V2.0_dist_S3.1.0_B02_x86_64.tar.gz tar -zxf PanWeiDB_V2.0_dist_S3.1.0_B02_x86_64_om.tar.gz
(3) 升级操作。
进入解压后的 script 目录下,通过./ha_ctl 命令实现。建议使用 nohup、&,在后台不挂断运行。
① 升级前需要准备环境,执行 ha_ctl prepare:
命令格式: nohup ha_ctl prepare VERSION PATH PREFIX <-c cluster_name>-l dcslist & 参数说明: - VERSION 为待升级版本号; - PATH 为新版本所在的升级目录; - PREFIX 为原版本运行目录;可以从omm用户的.bashrc文件中的GPHOME参数获取 - -c cluster_name:指定升级的集群名称。可选,如不指定默认为 panwei。 - -l dcslist 指定 dcs 节点和端口,格式如 http:192.*.*.60:2379。
先查看环境变量,获取原版本运行目录:

升级的版本查看:
cat /opt/panweidb/version.cfg

执行的ha_ctl prepare命令如下:
cd /opt/panweidb/script
nohup ./ha_ctl prepare V2.0_dist_S3.1.0_B02 /opt/panweidb /data/omm_db/ -c panwei -l http://192.*.*.60:2379 &
执行结果如下:

② 查看配置是否更改
pkg_path安装目录为新版本所在的升级目录,prefix为原版本运行目录
./ha_ctl show-cfg -l http://192.*.*.60:2379
执行结果如下:

③升级前配置平滑处理。参数同上。
命令格式: nohup ./ha_ctl upgrade -t catalog VERSION -l dcslist &
执行的命令如下:
nohup ./ha_ctl upgrade -t catalog V2.0_dist_S3.1.0_B02 -l http://192.*.*.60:2379 &
执行结果如下:

④停止集群所有节点
执行的命令如下:
nohup ./ha_ctl stop all -l http://192.*.*.60:2379 &
执行结果如下:

⑤升级集群版本。
-t 参数指定更新操作的类型,可选 ha(升级高可用)、app(升级数据库内核)、all(升级所有节点),如不指定默认为 all。
命令格式:
nohup ./ha_ctl upgrade -t all VERSION -l dcslist &
执行的命令如下:
./ha_ctl upgrade V2.0_dist_S3.1.0_B02 -l http://192.*.*.60:2379
执行结果如下:

⑥启动集群节点。
nohup ./ha_ctl start all -l http://192.*.*.60:2379 &
执行结果如下:

⑦升级后配置平滑处理。参数同上。
nohup ./ha_ctl upgrade -t catalog-post VERSION -l dcslist &
执行的命令如下:
./ha_ctl upgrade -t catalog-post V2.0_dist_S3.1.0_B02 -l http://192.*.*.60:2379
执行结果如下:

⑧升级验证
查看升级后版本
gsql -V
执行结果如下:

select version();
执行结果如下:

gaussdb -V
执行结果如下:

查看集群状态
[omm@node1 script]$ ./ha_ctl monitor all -l http://192.*.*.60:2379 -HI +----+------------+----------------+-------+---------+--------+ | No | name | host | port | state | leader | +----+------------+----------------+-------+---------+--------+ | 0 | ha_server1 | 192.*.*.60 | 20001 | running | True | +----+------------+----------------+-------+---------+--------+ +----+------+----------------+------+----------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------------+------+----------------+---------+---------+ | 0 | gtm1 | 192.*.*.60 | 6666 | /data/gtm/gtm1 | running | standby | | 1 | gtm2 | 192.*.*.62 | 6666 | /data/gtm/gtm2 | running | primary | +----+------+----------------+------+----------------+---------+---------+ +----+------+----------------+------+-----------------+---------+---------+ | No | name | host | port | work_dir | state | role | +----+------+----------------+------+-----------------+---------+---------+ | 0 | cn1 | 192.*.*.62 | 5432 | /data/coord/cn1 | running | primary | | 1 | cn2 | 192.*.*.64 | 5432 | /data/coord/cn2 | running | primary | +----+------+----------------+------+-----------------+---------+---------+ +----+-------+-------+----------------+-------+-----------------+---------+---------+ | No | group | name | host | port | work_dir | state | role | +----+-------+-------+----------------+-------+-----------------+---------+---------+ | 0 | dn1 | dn1_1 | 192.*.*.62 | 15432 | /data/dn1/dn1_1 | running | primary | | 1 | dn1 | dn1_2 | 192.*.*.64 | 15432 | /data/dn1/dn1_2 | running | standby | | 2 | dn1 | dn1_3 | 192.*.*.60 | 15432 | /data/dn1/dn1_3 | running | standby | | 3 | dn2 | dn2_1 | 192.*.*.64 | 20010 | /data/dn2/dn2_1 | running | primary | | 4 | dn2 | dn2_2 | 192.*.*.60 | 20010 | /data/dn2/dn2_2 | running | standby | | 5 | dn2 | dn2_3 | 192.*.*.62 | 20010 | /data/dn2/dn2_3 | running | standby | +----+-------+-------+----------------+-------+-----------------+---------+---------+ +----+----------------------------+--------+---------+----------+ | No | url | name | state | isLeader | +----+----------------------------+--------+---------+----------+ | 0 | http://192.*.*.64:2379 | node_2 | healthy | False | | 1 | http://192.*.*.62:2379 | node_1 | healthy | True | | 2 | http://192.*.*.60:2379 | node_0 | healthy | False | +----+----------------------------+--------+---------+----------+
至此,分布式数据库升级结束,数据库集群运行正常!
关于作者:
网名:飞天,墨天轮2024年度优秀原创作者,拥有 Oracle 10g OCM 认证、PGCE认证以及OBCA、KCP、KCSM、ACP、磐维等众多国产数据库认证证书,目前从事Oracle、Mysql、PostgresSQL、磐维数据库管理运维工作,喜欢结交更多志同道合的朋友,热衷于研究、分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同探讨~~~




