#滚动升级
YashanDB支持通过yasboot工具滚动升级已经部署的数据库,在数据库不停机的情况下,将数据库二进制文件升级到新版本。
# 适用场景
滚动升级操作适用的部署形态、版本及其他约束如下表所示。
升级路径必须满足旧版本的版本号小于新版本的且发布时间早于新版本。
Note:
本文将版本号前三位相同但第四位不同的版本称为“兼容版本”,兼容版本之间数据库dbcr目录相同。
| 部署形态 | 升级路径 | 约束 |
|---|---|---|
| 单机高可用部署,且为yashan模式 | 23.2.1.0以上 → 兼容的新版本 | 升级时会校验新旧数据库的dbcr目录是否相同,如果不相同则无法滚动升级(此时滚动升级操作不会执行,不涉及回退) |
| 单机高可用部署,且为yashan模式 | 23.4.1.0以上 → 所有新版本 | 如果新旧版本为兼容版本(升级时会校验新旧数据库的dbcr目录确认)则无其他额外的约束,否则约束如下: * 升级依赖于数据库闪回、逻辑备库以及对应功能的其他约束 * 升级过程中,禁止执行DDL,包括对象类的DDL和文件类的DDL * 建议在业务低峰期执行升级,如果业务量太大,可能导致逻辑备库回放跟不上主库而升级失败 |
| 共享集群部署 | 23.4.2.0以上 → 兼容版本 | * 升级时会校验新旧数据库的dbcr目录是否相同,如果不相同则无法滚动升级(此时滚动升级操作不会执行,不涉及回退) |
| 存算一体分布式高可用部署 | 23.2.3.0以上 → 23.2.3.100及以上的兼容版本 | * 要求MN和DN均为主备部署 * 升级时会先校验新旧数据库的dbcr目录是否相同,如果不相同则无法滚动升级(此时滚动升级操作不会执行,不涉及回退) |
# 注意事项
- 请完成升级前准备要求的各项工作后再进行升级。
- 升级过程中,不建议对数据库节点进行其他操作。如无法避免,只能使用yasboot执行相关管理操作。
- 若升级未成功,请执行滚动升级回退恢复环境。如果回退仍不成功,请联系我们的技术支持解决。
- 升级后,需根据运行日志告警判断是否使用过时参数,告警内容请查阅参数配置中参数初始化章节示例。若使用了过时参数,需根据配置参数中对应参数的介绍判断该参数是否因改名而过时,并且是否需要将该过时参数调整为对应的新参数。若新参数未配置,则过时参数的配置值将自动转换为新参数值。
# 操作步骤
升级过程需使用yasboot工具,且所有步骤均需在yasboot工具所在的服务器(已存在hosts.toml文件)上操作,详细的yasboot命令介绍请查阅yasboot。
Note:
本文中所有路径、版本号、用户、密码与回显信息等仅为示例,请以实际为准。
# 步骤1:升级yasom与yasagent
以下操作均在升级安装包的存放目录中执行。
以安装用户登录目标服务器。
查看当前yasom与yasagent版本。
$ ps -ef | grep -E "yasom|yasagent" | grep -v grep yashan 102280 1 0 16:24 ? 00:00:00 /data/yashan/yasdb_home/{旧版本号}/bin/yasagent --init -c yashandb -l 192.168.1.2:1676 --host-id host0001 -k -d yashan 102323 1 0 16:24 ? 00:00:00 /data/yashan/yasdb_home/{旧版本号}/bin/yasom --init -c yashandb -l 192.168.1.2:1675 -k -d # 获取到yasom和yasagent所在的bin目录,执行-h命令获取当前版本信息 $ /data/yashan/yasdb_home/{旧版本号}/bin/yasom -h Usages: yasom [<flags>] <command> yasom daemon process, version: Release {旧版本号}切换至新版本安装包所在路径,执行如下命令升级yasom与yasagent。
$ cd /home/yashan/tmp_upgrade $ ./bin/yasboot package upgrade -t /home/yashan/install/hosts.toml upgrade package... install version: yashandb {新版本号} host0001 100% [====================================================================] 3s upgrade host to yasom...参数 说明 -t, --toml 服务器配置文件的路径,即数据库安装目录下原有的hosts.toml文件 检查yasom与yasagent升级后的版本。
$ ps -ef | grep -E "yasom|yasagent" | grep -v grep yashan 103607 1 0 16:32 ? 00:00:00 /data/yashan/yasdb_home/{新版本号}/bin/yasagent -c yashandb -d yashan 103650 1 0 16:32 ? 00:00:00 /data/yashan/yasdb_home/{新版本号}/bin/yasom -c yashandb -d # 版本已升级为{新版本号}
# 步骤2:升级数据库
Caution:
若在已升级yasom与yasagent但数据库尚未升级时,数据库进程(yasdb)发生异常,需先执行yasboot package rollback命令回退yasom与yasagent方可使用yasboot工具对数据库进行运维操作。
数据库升级过程中出现任何错误,请执行滚动升级回退恢复环境,升级成功后无法回退。
查看当前数据库版本。
$ ./bin/yasboot sql -d sys/********@192.168.1.2:1688 -s 'select version from v$instance;' VERSION ---------------------------------------------------------------- Release {旧版本号} x86_64 # 当前版本为{旧版本号}升级数据库。
$ ./bin/yasboot cluster upgrade --cluster yashandb -p sys_password --rolling +-------------------------------------------------------------------------------------------------------------+ | type | uuid | name | hostid | index | status | return_code | progress | cost | +-------------------------------------------------------------------------------------------------------------+ | task | 9d0041edd55f7d4f | UpgradeYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 23 | +------+------------------+---------------------+--------+----------+---------+-------------+----------+------+ task completed, status: SUCCESSNote:
使用
--keep-primary参数可以确保滚动升级后集群的主库仍为升级前的主库。检查数据库升级后的版本。
$ ./bin/yasboot sql -d sys/********@192.168.1.2:1688 -s 'select version from v$instance;' VERSION ---------------------------------------------------------------- Release {新版本号} x86_64 # 版本已升级为{新版本号}
# 步骤3:升级后操作
检查环境变量
升级操作不会修改服务器的
YASDB_HOME、YASDB_DATA、LD_LIBRARY_PATH以及PATH等环境变量。若手动修改过
YASDB_HOME(例如取消软链接改为直接指向目标路径),升级后需再次手动更新为新版本数据库相应的环境变量,若不更新直接使用yasql等工具命令会继续指向旧版本数据库。开启或关闭某些配置
若为顺利执行升级而临时调整过某些配置(例如关闭仲裁),在升级完成后应按需还原配置(例如重新开启仲裁)。

