#离线升级
YashanDB支持通过yasboot工具离线升级已经部署的数据库,将数据库二进制文件升级到新版本。
本文将以22.2.3.11版本升级到23.1.0.100版本为例介绍数据库的离线升级方式。
# 升级注意事项
- 离线升级要求当前数据库无新业务数据产生,请通过应用手段停止用户业务。
- 由于升级中不会备份用户表空间,请在升级前执行一次全量备份。
- 请完成升级前准备要求的各项工作后再运行升级。
- 升级成功后,检查数据库正常再开放用户业务。
- 升级未成功,请运行升级回退。如果回退仍不成功,请联系YashanDB技术支持解决。
- 升级过程须使用YashanDB内置的yasboot工具,该工具各命令选项含义及说明请参考yasboot章节。
- 对于未通过yasboot安装部署的旧版本数据库,请先进行数据库托管(仅针对单机部署)。
# 升级前准备
1.获得新版本安装包
请与YashanDB技术支持确认当前在用数据库版本是否可直接升级到该新版本。
2.确认临时目录的权限及空间足够
离线升级中会创建一个临时目录(${旧版本的安装目录}/upgrade_tmp/backup)作为备份目录,该目录包含解压软件包文件,和当前数据库ctrl/system/undo/redo等文件的备份(主备环境中各节点分别备份至本机),请确保升级操作用户拥有创建该目录的权限,且拥有足够的存储空间。
3.检查SSH服务
升级需用到SSH和sftp服务,请检查各节点SSH服务是否已开启并允许升级操作用户远程登录。
可通过如下命令检查SSH服务是否已开启:
$ systemctl status sshd.service ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-04-26 14:32:52 CST; 3 months 6 days ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 6372 (sshd) CGroup: /system.slice/sshd.service └─6372 /usr/sbin/sshd -D
可通过如下命令检查升级中是否能操作用户远程登录:
使用当前用户SSH连接到当前主机,SSH可以使用密码或者密钥免密:
$ ssh 用户名@ip -p ssh端口
按照命令提示输入密码,查看是否能够成功连接上SSH主机。
4.检查数据库实例状态
升级前请确保数据库实例(包括主备环境中的所有节点)为OPEN状态,可通过如下命令检查数据库实例状态:
#请将password@ip:port修改成设置的sys密码及对应ip地址:端口号
$ yasboot sql -d sys/password@ip:port -s 'select status from v$instance;'
STATUS
-----------------
OPEN
其中:
-d, --dsn 提供以一串字符串执行账号密码输入的方式,例如 'username/password@127.0.0.1:1688'
-s, --sql 执行行单条sql命令并且退出
5.检查monitor进程
检查各节点机器是否有monitor进程在运行,如有则执行kill -9 monit
命令终止该进程。
Note:
此步骤需要停止的monitor进程为YashanDB相关产品用户下的进程。
$ ps -ef | grep monit | grep yashan
6.全量checkpoint
等待主机redo全部同步到备机,然后在各节点执行全量checkpoint,以加快升级速度。
ALTER SYSTEM CHECKPOINT;
# 升级步骤
除特殊说明,以下步骤均在yasboot工具所在的环境(已存在hosts.toml文件的机器)上操作,且命令中的路径、用户、密码等需更换为实际值。
# 1.执行全量备份
YashanDB提供两种备份的方式,分别是通过SQL命令和使用yasrman工具,如需了解更多有关备份的语法及说明请参考备份恢复章节。
SQL命令方式:
SQL命令执行全量备份须在实例节点上,可通过执行如下语句执行全量备份:
--SQL命令方式(需在实例节点上操作) BACKUP DATABASE FULL FORMAT '/home/yashan/full_20221123' TAG 'full' PARALLELISM 3;
yasrman工具方式:
使用yasrman工具进行全量备份须确保在yasrman工具所在环境操作,可通过执行如下命令执行全量备份:
#请将password@ip:port修改成设置的sys密码及对应ip地址:端口号 $ yasrman sys/password@ip:port -c "backup cluster tag 'full_1' format 'full_bak_1'" -D /home/yashan/catalog
# 2.上传新版本安装包
创建一个空目录,该目录将作为升级安装包的临时存放路径。
$ mkdir ~/tmp_upgrade
将新版安装包上传至该目录中。
解压安装包。
$ cd ~/tmp_upgrade $ tar zxf yashandb-23.1.0.100-linux-x86_64.tar.gz
# 3.升级yasom/yasagent
本步骤须在升级安装包的临时存放路径中执行,可通过如下命令进入该目录:
$ cd ~/tmp_upgrade
查看yasom/yasagent版本
可通过执行如下命令查看升级前的yasom/yasagent版本:
# 版本是22.2.3.11 $ ps -ef | grep -E "yasom|yasagent" | grep -v grep yashan 102280 1 0 16:24 ? 00:00:00 /home/yashan/yashandb_home/yashandb/22.2.3.11/bin/yasagent --init -c yashandb -l 192.168.0.2:1676 --host-id host0001 -k 4c2f20b34e9c0c2d -d yashan 102323 1 0 16:24 ? 00:00:00 /home/yashan/yashandb_home/yashandb/22.2.3.11/bin/yasom --init -c yashandb -l 192.168.0.2:1675 -k 4c2f20b34e9c0c2d -d
升级yasom/yasagent
可通过执行如下命令对yasom/yasagent进行升级:
$ ./bin/yasboot package upgrade -t /home/yashan/install/hosts.toml -p yashandb-23.1.0.100.tar.gz upgrade package... install version: yashandb 23.1.0.100 host0001 100% [====================================================================] 3s upgrade host to yasom...
简单参数介绍:
-t, --toml 需要主机配置文件如hosts.toml,这里是指部署旧版本时生成的hosts.toml文件 -p, --package 升级软件包的绝对路径
查看yasom/yasagent版本
可通过执行如下命令查看升级后的yasom/yasagent版本:
# 版本是23.1.0.100 $ ps -ef | grep -E "yasom|yasagent" | grep -v grep yashan 103607 1 0 16:32 ? 00:00:00 /home/yashan/yashandb_home/yashandb/23.1.0.100/bin/yasagent -c yashandb -d yashan 103650 1 0 16:32 ? 00:00:00 /home/yashan/yashandb_home/yashandb/23.1.0.100/bin/yasom -c yashandb -d
# 4.升级数据库
本步骤须在升级安装包的临时存放路径中执行,可通过如下命令进入该目录:
$ cd ~/tmp_upgrade
Caution:
数据库升级过程中出现任何错误,请运行升级回退恢复环境,升级成功则无法回退。
查看数据库版本
可通过执行如下命令查看当前数据库版本:
# 版本是22.2.3.11 $ ./bin/yasboot sql -d sys/password@192.168.1.2:1688 -s 'select version from v$instance;' VERSION ---------------------------------------------------------------- Release 22.2.3.11 x86_64
升级数据库
可通过执行如下命令升级数据库:
$ ./bin/yasboot cluster upgrade --cluster yashandb type | uuid | name | hostid | index | status | return_code | progress | cost ------------------------------------------------------------------------------------------------------------- task | 9d0041edd55f7d4f | UpgradeYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 23 ------+------------------+---------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS
Note:
升级过程中将对旧版本进行备份,位于各个主机的安装目录下upgrade_tmp/backup下。
查看数据库版本
可通过执行如下命令查看当前数据库版本:
# 版本是23.1.0.100 $ ./bin/yasboot sql -d sys/password@192.168.1.2:1688 -s 'select version from v$instance;' VERSION ---------------------------------------------------------------- Release 23.1.0.100 x86_64
# 5.升级后注意事项
整个升级流程并不会修改主机的环境变量,如YASDB_HOME
YASDB_DATA
LD_LIBRARY_PATH
PATH
。
如果之前配置过环境变量,请先清除之前的环境变量信息并自行修改新版本数据库的环境变量。
Caution:
假如之前配置过环境变量,升级后没有修改环境变量,直接使用yasdb/yasql等命令会仍然指向旧版本数据库。
# 升级回退
数据库升级过程中可能因为命令错误、配置文件错误及版本错误等原因导致数据库升级失败,此时请运行升级回退恢复升级前环境。
Warn:
- 只有升级失败才允许回退。
- 升级回退的过程中会有数据库关闭的过程。
- 假如升级失败,且升级回退失败,请联系YashanDB技术支持解决。
升级成功时执行升级回退会报错:
$ ./bin/yasboot cluster rollback -c yashandb
yashandb can't rollback because upgrade result is success
# 1.回退数据库
升级失败时执行升级回退预期结果:
$ ./bin/yasboot cluster rollback -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
---------------------------------------------------------------------------------------------------------------------
task | c82ebcbb5fb4acd3 | RollbackYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | -
task completed, status: SUCCESS
其中:
-c, --cluster 集群名称
# 2.回退yasom/yasagent
$ ./bin/yasboot package rollback -c yashandb -t /home/yashan/install/hosts.toml
rollback package...
host0001 100% [====================================================================] 2s
其中:
-c, --cluster 集群名称
-t, --toml 需要主机配置文件如hosts.toml,这里是指部署旧版本时生成的hosts.toml文件