#离线升级
YashanDB支持通过yasboot工具离线升级已部署的数据库,将数据库二进制文件升级到新版本。
# 适用场景
离线升级操作适用于所有部署形态,升级路径必须满足旧版本的版本号小于新版本且发布时间早于新版本。
# 注意事项
- 离线升级过程需要一定的时间(尤其是主备部署且slice数量多及数据量大的场景下,例如从v23.2.8.100及以前的版本升级到新版本时,每增加10w个slice预计耗时可能会增加10分钟),请预留充足的时间窗口。
- 请完成升级前准备要求的各项工作后再进行升级。
- 升级过程中,不建议对数据库节点进行其他操作。如无法避免,只能使用yasboot执行相关管理操作。
- 若升级未成功,请执行离线升级回退。如果回退仍不成功,请联系我们的技术支持解决。
- 升级成功后,需根据运行日志告警判断是否使用过时参数,告警内容请查阅参数配置中参数初始化章节示例。若使用了过时参数,需根据配置参数中对应参数的介绍判断该参数是否因改名而过时,并且是否需要将该过时参数调整为对应的新参数。若新参数未配置,则过时参数的配置值将自动转换为新参数值。
# 操作步骤
升级过程需使用yasboot工具,且所有步骤均需在yasboot工具所在的服务器(已存在hosts.toml文件)上操作,详细的yasboot命令介绍请查阅yasboot。
Note:
本文中所有路径、版本号、用户、密码与回显信息等仅为示例,请以实际为准。
# 步骤1:升级yasom与yasagent
以下操作均在升级安装包的存放目录中执行,并请根据实际的升级场景选择对应的操作步骤:
# 场景1:22.2.x.x升级至23.2.x.x及以上
22.2.x.x升级至23.2.x.x及以上的场景中,升级yasom与yasagent等价于使用高版本的yasboot托管旧版本数据库,需要先收集整理当前数据库环境的各项配置信息,包括服务器信息(IP、端口、SSH用户名密码等)、数据库的路径信息($YASDB_HOME、$YASDB_DATA等)以及主备规模等。
以安装用户登录目标服务器。
查看当前环境中是否存在yasom与yasagent进程及其版本。
$ ps -ef | grep -E "yasom|yasagent" | grep -v grep yashan 102280 1 0 16:24 ? 00:00:00 /data/yashan/yasdb_home/yashandb/{old_version_number}/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/yashandb/{old_version_number}/bin/yasom --init -c yashandb -l 192.168.1.2:1675 -k -d # 获取到yasom和yasagent所在的bin目录,执行-h命令获取当前版本信息 $ {yasom和yasagent所在的bin目录}/yasom -h Usages: yasom [<flags>] <command> yasom daemon process, version: Release {old_version_number}若存在yasom与yasagent进程,需执行如下命令或操作系统的进程终止命令将其终止。
$ {yasom和yasagent所在的bin目录}/yasboot process yasom stop -c yashandb -t /home/yashan/install/hosts.toml && /data/yashan/yasdb_home/yashandb/{旧版本号}/bin/yasboot process yasagent stop -c yashandb -t /home/yashan/install/hosts.toml stop yasom successfully stop agent host0002 successfully stop agent host0001 successfully参数 说明 -c, --cluster 需指定为当前数据的实际集群名称 -t, --toml 需指定为当前数据库的服务器配置文件 进入新版本安装包所在路径。
$ cd /home/yashan/tmp_upgrade结合当前数据库环境信息,执行如下命令生成服务器配置文件(hosts.toml)。
$ ./bin/yasboot package se gen -c yashandb \ -u yashan -p password --ip ip1,ip2,……,ipn \ --install-path /data/yashan/yasdb_home \ --node 3 -f参数 说明 -c, --cluster 当前数据库的集群名称 -u, --username 服务器SSH用户名 -p, --password 服务器SSH用户登录密码 --port 指定SSH服务端口 --ip 当前数据库的服务器IP地址,多个IP间使用英文逗号分隔 --install-path 当前数据库的安装目录 --node 当前数据库的主备库数量(不包括级联备的数量),例如规模为1主2备1级联备的数据库则该参数应设置为3 Note:
该命令会生成服务器配置文件(hosts.toml)和数据库集群配置文件(集群名.toml),后续操作只需使用hosts.toml。
执行如下命令,初始化yasom和yasagent。
$ ./bin/yasboot package install -t hosts.toml -f checking install package... install version: yashandb {version_number} host0001 100% [====================================================================] 3s update host to yasom...参数 说明 -t, --toml 服务器配置文件,即上一步新生成的hosts.toml 执行如下命令,生成托管配置模板文件join_demo.toml。
$ ./bin/yasboot package config join-demo -t SE参数 说明 -t, --type 当前数据库的部署形态 按需修改托管配置文件join_demo.toml并保存。
$ vi join_demo.toml此处内容仅为示例,请根据实际情况修改文件中的参数值:
cluster = "yashandb" # 需修改为集群名称,可自定义命名,后续使用yasboot运维管理数据库指定集群名时,应使用该名称 sys_password = "yasdb_123" # 需修改为目标数据库sys用户的密码 yas_type = "SE" # 部署形态,通常无需手动修改 [primary_config] manage_ip = "192.168.1.2" # 需修改为主库所在服务器的IP yasdb_home = "/opt/yasom/yashandb/yashandb" # 需修改为主库的$YASDB_HOME目录 node_path = "/opt/yasom/yashandb/data/yashandb/db-1-1" # 需修改为主库的$YASDB_DATA目录 node_id = "1-1:1" # 主库的节点ID,即nodeid,通常无需手动修改 [[standby_config]] # 备库参考主库的示例修改,若无可删除 manage_ip = "192.168.1.3" yasdb_home = "/opt/yasom/yashandb/yashandb" node_path = "/opt/yasom/yashandb/data/yashandb/db-1-2" node_id = "1-2:1" [[standby_config]] # 备库参考主库的示例修改,若无可删除 manage_ip = "192.168.1.4" yasdb_home = "/opt/yasom/yashandb/yashandb" node_path = "/opt/yasom/yashandb/data/yashandb/db-1-3" node_id = "1-3:1"执行如下命令,进行托管操作。
$ ./bin/yasboot cluster join -t SE --config join_demo.toml参数 说明 -t, --type 当前数据库的部署形态 -c, --config 托管配置文件,即上一步生成的join_demo.toml 命令执行结果如下所示:
Caution:
当状态无法正常显示时,不推荐继续托管,请检查托管配置文件是否正确。
the cluster status is as follow: |key |value |------------+------ |clusterName |yashandb |version |{version_number} the cluster status is as follow: +----------------------------------------------------------------------------------------------------------------------------------------------------+ | hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path | +----------------------------------------------------------------------------------------------------------------------------------------------------+ | host0001 | db | 1-1:1 | 46689 | open | normal | primary | 192.168.1.2:1688 | /data/yashan/yasdb_data/db-1-1 | +----------+-----------+--------+-------+-----------------+-----------------+---------------+--------------------+-----------------------------------+ Check completed Are you sure you to add yasdb yashandb to yasom[yes/no]: yes +-------------------------------------------------------------------------------------------------------+ | type | uuid | name | hostid | index | status | return_code | progress | cost | +-------------------------------------------------------------------------------------------------------+ | task | e2007922a317a02c | JoinYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | - | +------+------------------+------------------+--------+-------+---------+-------------+----------+------+ task completed, status: SUCCESS再次检查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:23.2.x.x及以上之间升级
以安装用户登录目标服务器。
查看当前yasom与yasagent版本。
$ ps -ef | grep -E "yasom|yasagent" | grep -v grep yashan 102280 1 0 16:24 ? 00:00:00 /data/yashan/yasdb_home/yashandb/{old_version_number}/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/yashandb/{old_version_number}/bin/yasom --init -c yashandb -l 192.168.1.2:1675 -k -d # 获取到yasom和yasagent所在的bin目录,执行-h命令获取当前版本信息 $ /data/yashan/yasdb_home/yashandb/{old_version_number}/bin/yasom -h Usages: yasom [<flags>] <command> yasom daemon process, version: Release {old_version_number}切换至新版本安装包所在路径,执行如下命令升级yasom与yasagent。
$ cd /home/yashan/tmp_upgrade $ ./bin/yasboot package upgrade -t /home/yashan/install/hosts.toml upgrade package... install version: yashandb {new_version_number} 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/{new_version_number}/bin/yasagent -c yashandb -d yashan 103650 1 0 16:32 ? 00:00:00 /data/yashan/yasdb_home/{new_version_number}/bin/yasom -c yashandb -d # 版本已升级为{new_version_number}
# 步骤2:升级数据库
Caution:
若在已升级yasom与yasagent但数据库尚未升级时,数据库进程(yasdb)发生异常,需先执行yasboot package rollback命令回退yasom与yasagent方可使用yasboot工具对数据库进行运维操作。
数据库升级过程中出现任何错误,请执行离线升级回退恢复环境,升级成功后无法回退。
查看当前数据库版本。
$ yasql / as sysdba YashanDB SQL Enterprise Edition Release {old_version_number} x86_64 Connected to: YashanDB Server Enterprise Edition Release {old_version_number} x86_64 - Linux SQL> SELECT version FROM V$INSTANCE; VERSION ---------------------------------------------------------------- RELEASE {old_version_number} x86_64 -- 当前版本为{old_version_number} SQL> EXIT根据数据库部署形态执行相应命令,升级数据库。
单机部署、共享集群部署(23.4.x.x及以上版本之间升级)、存算一体分布式集群部署
$ ./bin/yasboot cluster upgrade -c yashandb -p sys_password +---------------------------------------------------------------------- ---------------------------------------+ | type | uuid | name | hostid | index | status | return_code | progress | cost | +---------------------------------------------------------------------- ---------------------------------------+ | task | 9d0041edd55f7d4f | UpgradeYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 23 | +------+------------------+---------------------+--------+----------+---------+-------------+----------+------+ task completed, status: SUCCESS共享集群部署(23.2.x.x及以前 → 23.4.x.x及以上)
$ ./bin/yasboot cluster upgrade -c yashandb -p sys_password --disk-config disk_config.toml +-------------------------------------------------------------------------------------------------------------+ | type | uuid | name | hostid | index | status | return_code | progress | cost | +-------------------------------------------------------------------------------------------------------------+ | task | 9d0041edd55f7d4f | UpgradeYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 23 | +------+------------------+---------------------+--------+----------+---------+-------------+----------+------+ task completed, status: SUCCESS参数 说明 --disk-config 指定共享集群升级配置文件
检查数据库升级后的版本以及运行状态。
$ ./bin/yasboot cluster status -c yashandb -d -p sys_password $ ./bin/yasql / as sysdba YashanDB SQL Enterprise Edition Release {new_version_number} x86_64 Connected to: YashanDB Server Enterprise Edition Release {new_version_number} x86_64 - Linux SQL> SELECT version FROM V$INSTANCE; VERSION ---------------------------------------------------------------- RELEASE {新版本号} x86_64 -- 版本已升级为{新版本号} SQL> EXIT如果是共享集群升级场景,升级成功后需要重启集群。
$ ./bin/yasboot cluster restart -c yashandb -p sys_password --disable task completed, status: SUCCESS $ ./bin/yasboot cluster status -c yashandb -d -p sys_password
# 步骤3:升级后操作
检查环境变量
升级操作不会修改服务器的
YASDB_HOME、YASDB_DATA、LD_LIBRARY_PATH以及PATH等环境变量。若手动修改过
YASDB_HOME(例如取消软链接改为直接指向目标路径),升级后需再次手动更新为新版本数据库相应的环境变量,若不更新直接使用yasql等工具命令会继续指向旧版本数据库。开启守护进程
若升级后需开启monit功能,执行如下命令开启:
$ yasboot monit start -c yashandb开启或关闭某些配置
若为顺利执行升级操作而临时调整过某些配置(例如关闭仲裁、关闭自启动),在升级完成后应按需还原配置(例如重新开启仲裁、重新开启自启动)。
若新版本支持的功能在升级后默认关闭(例如共享集群的SCAN、VIP功能),可按流程手动配置并开启对应功能(例如为共享集群配置SCAN)。
Note:
从23.2.1.x版本开始,yasom仲裁选主功能需依赖于已开启操作系统认证。若23.2.1.x以下版本中已开启yasom仲裁选主(升级前准备中会临时关闭该功能),升级至23.2.1.x或以上版本后仍需开启,需先检查并开启操作系统认证,才能保证仲裁选主功能正常使用。

