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

打印 上一主题 下一主题

主题 1671|帖子 1671|积分 5013

升级典型问题

官网升级操作指引 离线升级,一般线上操作之前需要照着做一遍,但是由于数据量少、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

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

为什么需要备份空间
升级前需要整库做backup,作为升级过程的终极回退本领。处理需要预留backup的空间外,升级过程还会做数据转换,还需要预留下面的空间:
离线升级中会创建一个临时目次(${旧版本的安装目次}/upgrade_tmp/backup)作为备份目次,备份当前数据库ctrl/system/undo/redo等文件的备份(主备环境中各节点分别备份至本机),需要确保拥有足够的存储空间。
官网阐明:

没有预留空间的后果
空间不足后果
升级过程,由于空间不足,数据库会变为readonly状态,导致升级中断。
案例:22.2.4.1版本升级到22.2.8.105版本由于空间不足,导致升级失败。
关键日志:

处理方式
清算空间,保证空间足够,实验rollback,rollback成功之后重新升级。
3、设置文件目次错误

哪些目次容易错
集群托管toml文件注意使用旧版本的$YASDB_HOME、$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状态启动:

使用备份文件恢复
参考命令:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表