在实际进行 YashanDB 单机离线升级过程中,测试环境往往因为数据量小、监控进程(monit)未启动等因素,难以暴露潜在风险。到了正式环境,隐藏问题就容易集中爆发。本文总结了单机升级时最典型的三大问题及应急处理措施,供大家参考。
image.png

一、常见升级问题

  1. monit 进程未停止导致升级失败

monit 是什么?

monit 负责监控 YashanDB 相关进程(yasdb/yasagent/yasom),在进程异常退出时自动拉起恢复。

风险点

如果在升级前未停止 monit,当停止旧版本的 yasdb 进程时,monit 会立刻将其重启,导致升级程序检测到数据库处于 OPEN 状态,从而中断升级流程。

典型日志提示

升级日志中可见异常终止信息

image.png

处理方法

停止 monit 进程后,重新执行升级命令;

停止方式:

使用 yasboot 工具停止:yasboot monit stop --cluster debug

或者直接 kill -9 相关 monit 进程。
image.png

  1. 升级前未预留足够备份空间

为什么需要备份?

升级前系统会自动做全量备份(包括 ctrl/system/undo/redo 文件),作为回滚保障。升级过程中还会创建临时目录(${旧版本安装目录}/upgrade_tmp/backup)用于存放转换数据,因此必须预留充足磁盘空间。

风险点

如果空间不足:

升级时数据库可能自动切换成 readonly 状态;

升级中断,甚至可能回滚失败。

案例

22.2.4.1 升级到 22.2.8.105 版本时,因备份空间不足,导致升级失败。

image.png

处理方法

清理空间,确保足够余量;

执行 rollback;

rollback 成功后,重新发起升级。
image.png

  1. 配置文件路径错误

容易出错的地方

在托管集群环境中,升级时若误用新版本的 YASDB_HOME、YASDB_DATA 路径,可能导致关键进程未正确停止。

风险点

路径配置错误会导致升级脚本停止 monit 失败,从而回到第一种情况 —— 进程被拉起,升级中断。

案例

22.2.11.100 升级到 22.2.14.100 过程中,由于配置了错误的目录路径,导致 monit 未能正常关闭,升级失败。
image.png

image.png
处理方法

检查 yasdb 是否已升级到新版本;

如果仍为老版本,手动停止 monit;

然后重新执行升级命令。

二、升级失败应急处理方法

  1. 快速定位日志

升级过程中,关键日志存放在:

$YASDB_HOME/om/{cluster-name}/log/yasagent.log

可以根据时间点和关键字,快速定位失败原因。

  1. 判断是否能直接 rollback

YashanDB 升级分为两步:托管组件升级(yasom/yasagent)和数据库升级(yasdb);

官网 rollback 指的是数据库层面的回滚,如果前置步骤(如备份、路径)异常,即使 rollback 成功,也可能存在隐患。

  1. 手动恢复方法(当 rollback 无法正常使用时)

以 22.2.11.100 升级到 22.2.13.100 为例:

停止 yasom/yasagent/yasdb;

修改环境配置,调整 ~/.yasboot/{cluster-name}.env,指向原始目录;

使用 yasboot 重启 yasom/yasagent;

将 yasdb 启动至 nomount 状态;

使用备份文件进行恢复。

参考命令示例可根据实际情况定制。

三、小结

升级前请务必:

停止 monit 进程;

确认磁盘空间充足;

检查配置文件路径是否正确。

一旦发现升级异常,不要盲目 rollback,应优先分析日志定位问题,选择最合适的应急措施。


数据库砖家
1 声望0 粉丝