写点什么

【YashanDB 知识库】单机升级典型问题及应急措施

作者:YashanDB
  • 2024-09-14
    广东
  • 本文字数:1604 字

    阅读完需:约 5 分钟

升级典型问题

官网升级操作指引 离线升级,一般线上操作之前需要照着做一遍,但是由于数据量少、monit 进程在测试环境没有启动等原因,一些操作、配置问题在测试过程中不会暴露,在生成操作的时候才暴露,下面 3 项是比较常见的容易遗漏的:

1、monit 进程没停止引起升级失败

monit 进程是什么


monit 进程会对 yasdb/yasagent/yasom3 个进程做监控,如果出现异常重新拉起(注意不止 yasdb,yasagent、yasom 进程也会被拉起,如下演示杀死 yasom、yasagent 被重新拉起)。



monit 进程没有停止的后果


monit 进程没有停止的后果


如果升级过程没有停止 monit 进程,在停止老的 yasdb 进程的时候会被自动拉起,升级程序识别到 db 在 OPEN 状态,中止升级。


关键日志:



处理方式


停止 monit 进程,重新执行 yasdb 升级命令。


停止方式


■ 使用 yasboot(yasboot monit stop --cluster debug)


■ 使用 kill -9 <pid>


2、升级前没预留足够的空间做备份

为什么需要备份空间


升级前需要整库做 backup,作为升级过程的终极回退手段。处理需要预留 backup 的空间外,升级过程还会做数据转换,还需要预留下面的空间:


离线升级中会创建一个临时目录(${旧版本的安装目录}/upgrade_tmp/backup)作为备份目录,备份当前数据库 ctrl/system/undo/redo 等文件的备份(主备环境中各节点分别备份至本机),需要确保拥有足够的存储空间。


官网说明:



没有预留空间的后果


空间不足后果


升级过程,由于空间不足,数据库会变为 readonly 状态,导致升级中断。


案例:22.2.4.1 版本升级到 22.2.8.105 版本由于空间不足,导致升级失败。


关键日志:



处理方式


清理空间,保证空间足够,执行 rollback,rollback 成功之后重新升级。

3、配置文件目录错误

哪些目录容易错


集群托管 toml 文件注意使用旧版本的YASDB_DATA,需要特别注意:



配置错误的后果


路径配置错误后果


升级过程,会自动对 monit 进程做停止,但是如果路径配置错误,会使得兜底的停止动作没执行成功,进而引发上述 monit 进程没停止的问题。


案例:在 22.2.11.100 升级到 22.2.14.100 的时候,错误将 yasdb_home 目录设置为新的目录,导致自动停止 monit 进程失败。


关键日志




处理方式


检查升级结果,如果出现 already started and status is OPEN, not nomount 的错误, 执行下面步骤:


■ 确认 yasdb 进程没有升级, 还是老版本的


■ 停止 monit 进程


■ 执行 yasdb 升级

升级失败应急处理

根据日志快速定位根因

shell 命令 yasboot 的命令,会通过调用 yasom,再通过 yasom 调用各个节点 yasagent(主备、集群、分布式每个节点上都有 yasagent),最终转换成各个节点内部各个接口的调用。


因此,如果需要查看升级失败的日志,需要查看 yasagent.log,路径是 $YASDB_HOME/om/{cluster-name}/log/yasagent.log(每天一个日志文件,如果需要查看历史日志可以根据需要查找)



在 yasagent.log 查找错误日志,如上述典型问题的关键日志,yasagent.log 可查找到。

根据错误原因判断执行 rollback

崖山 DB 的升级,实际是分为独立的两步:


■ 托管的升级(即 yasom/yasagent)


■ 数据库的升级(即 yasdb)


官网上提供的升级 rollback 是针对数据库升级的 rollback,对升级过程中存在的数据转换使用备份的数据做回退(ctrl/redo/undo),前提是数据库升级之前的操作都没有问题。因此我们遇到失败的情况,有时候直接回退是没有用的,如上面空间不足、路径错误问题,直接 rollback 会有其他错误产生。

使用备份数据做 restore

升级之后可能 yasagent/yasom/yasdb 都已经换了版本,在不能使用 yasboot rollback 的情况下,需要逐一做回退,使用备份数据做恢复。以下使用 22.2.11.100 升级到 22.2.13.100(集群名称为 debug)为例,展示如何回退。


停止 yasom/yasagent/yasdb



修改 yasboot 环境变量


yasboot 命令执行的时候,执行的具体路径配置是在~/.yasboot/{cluster-name}.env 里配置的:


修改~/.yasboot/{cluster-name}.env,指到原来目录



使用 yasboot 重启 yasom/yasagent,重启 yasdb 到 nomount 状态


主要 yasdb 使用 nomount 状态启动:



使用备份文件恢复


参考命令:



用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】单机升级典型问题及应急措施_yashandb_YashanDB_InfoQ写作社区