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

升级典型问题

官网升级操作指引 离线升级,一般线上操作之前需要照着做一遍,但是由于数据量少、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文件注意使用旧版本的 Y A S D B H O M E 、 YASDB_HOME、 YASDBHOMEYASDB_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状态启动:

使用备份文件恢复

参考命令:


http://www.ppmy.cn/devtools/114352.html

相关文章

人工智能——猴子摘香蕉问题

一、实验目的 求解猴子摘香蕉问题,根据猴子不同的位置,求解猴子的移动范围,求解对应的过程,针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉,香蕉挂天花板上。定义多种谓词描述位置、状态等…

Python世界:基于PESQ的自动化语音打分脚本实践

Python世界:基于PESQ的自动化语音打分脚本实践 任务背景Python实现代码讲解本文总结 任务背景 音频任务中,有时需对处理后的语音信号进行客观打分,以评估算法效果。这里提供一种基于PESQ的自动化语音打分脚本,提高效率。 Python…

【论文阅读】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning

Abstract 在这篇论文中,我们研究了使基于视觉的机器人操纵系统能够泛化到新任务的问题,这是机器人学习中的一个长期挑战。我们从模仿学习的角度来应对这一挑战,旨在研究如何扩展和扩大收集的数据来促进这种泛化。为此,我们开发了…

项目小总结

这段时间主要把大概的开发流程了解完毕 修改了,并画了几个界面 一.界面 修改为 博客主页 个人中心 二.前后端分离开发 写前端时 就可以假设拿到这些数据了 const blogData2 {blog:{id:1,title: "如何编程飞人",author_id: 1,content: "这是一篇…

学习风格的类型

学习风格是指个体在学习过程中偏好的方式和方法。不同的学习风格反映了人们在接收、处理和记忆信息方面的不同偏好。了解自己的学习风格可以帮助提高学习效率和效果。以下是几种常见的学习风格类型: 1. 视觉型(Visual Learner) 特点&#x…

深度解析代理IP地址与端口:定义及高效获取方法

代理服务器在互联网生活中扮演了重要角色,不仅能帮助我们实现隐私安全浏览,还能获取更多的网络资源。而代理IP地址和端口是设置代理服务器的关键参数,想要成功连接代理,这两个参数是不可或缺的。那什么是代理IP地址和端口&#xf…

828华为云征文|部署在线文件管理器 Spacedrive

828华为云征文|部署在线文件管理器 Spacedrive 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 产品优势1.3 计费模式 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Spacedrive3.1 Spacedrive 介绍3.2 Docker 环境搭建3.3 Spac…

《信息系统安全》课程实验指导

第1关:实验一:古典密码算法---代换技术 任务描述 本关任务:了解古典密码体制技术中的代换技术,并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母,也就是说字母表为26个小写字母。 相关知识 为了完…

基于PHP的丽江旅游管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的丽江旅游管理系统 一 介绍 此丽江旅游系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈:phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销…

CKF的改进思路,SVDCKF,LSTMCKF,BPCKF,SVMCKF,自适应抗差CKF

CKF的基于介绍 CKF算法全称为容积卡尔曼滤波(Cubature Kalman Filter),是一种非线性滤波算法,由加拿大学者Arasaratnam和Haykin在2009年首次提出。CKF算法基于三阶球面径向容积准则,并使用一组容积点来逼近具有附加高斯噪声的非线性系统的状态均值和协方差,旨在实现非线…

Python编码系列—Python工厂方法模式:构建灵活对象的秘诀

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

element-plus组件问题汇总

element-plus组件问题汇总 一、el-select 1. 下拉选项实现添加全部 问题描述:value为空时,select框中不显示全部选项,但是下拉列表中全部显示是勾选状态 图片: 解决办法:添加 :empty-values“[null, undefined]” …

为啥数组指针指向一个数组时需要使用符号

int (*p)[10]; int a[10]; for (int i0;i<10;i) { a[i]i; } p &a; 在这个代码片段中&#xff0c;p 被声明为指向包含 10 个整数的数组的指针&#xff1a; 而 a 是一个包含 10 个整数的数组&#xff1a; &a 表示数组 a 的地址&#xff0c;且类型是 int (*)[10]&a…

专业学习|系统动力学概观(方法特色、构成要素、建模步骤)

一、系统动力学概览 &#xff08;一&#xff09;系统动力学介绍 系统动力学是一门综合交叉学科&#xff0c;其基础理论涵盖了控制论、信息论和决策论等多个领域。它利用计算机仿真技术对复杂系统进行定量研究&#xff0c;尤其是那些具有非线性、高阶次和多重反馈特征的系统。这…

docker构建镜像环境搭建深度学习开发环境

我想经常需要装环境的同学应该很烦&#xff0c;可能因为你的不小心&#xff0c;导致系统崩溃等等问题&#xff0c;或者环境需要装另一个版本的cuda&#xff0c;但是目前换可能不是很方便。这些我都遇到过&#xff0c;那么docker可以满足你的一切需求&#xff0c;你可以安装不同…

SpringBoot Web开发中的Thymeleaf模版引擎

在Spring Boot的Web开发中&#xff0c;模板引擎是处理视图层的重要组件之一。在众多模板引擎中&#xff0c;Thymeleaf以其优雅的自然模板设计和对HTML的良好支持&#xff0c;成为了Spring Boot官方推荐的模板引擎。本文将详细介绍如何在Spring Boot项目中使用Thymeleaf模板引擎…

VirtualBox增加磁盘并给docker用

在VirtualBox新增磁盘 在虚拟机停止的情况下依次选择&#xff0c;然后创建新磁盘 虚拟机新磁盘创建分区、格式化、挂载分区 开机自动挂载新磁盘分区/dev/sdb1&#xff1a; nano /etc/fstab末尾添加一行&#xff1a; /dev/sdb1 /disk02 e…

[Python学习日记-23] Python v2 和 v3 中的字符编码

[Python学习日记-23] Python v2 和 v3 中的字符编码 简介 Python2 vs Python3 的编码 总结 简介 在Python 中的字符编码&#xff08;上&#xff09;和Python 中的字符编码&#xff08;下&#xff09;中学习了字符编码的理论知识那么就&#xff0c;我们把目光回到 Python 当…

【深度学习】(2)--PyTorch框架认识

文章目录 PyTorch框架认识1. Tensor张量定义与特性创建方式 2. 下载数据集下载测试展现下载内容 3. 创建DataLoader&#xff08;数据加载器&#xff09;4. 选择处理器5. 神经网络模型构建模型 6. 训练数据训练集数据测试集数据 7. 提高模型学习率 总结 PyTorch框架认识 PyTorc…

canvas和svg的区别是什么?它们的应用场景是什么?

区别 绘图方式&#xff1a; Canvas 使用JavaScript API在画布上绘制像素来创建图形&#xff0c;提供了对像素级别的控制&#xff0c;可以实现复杂的图形和动画效果1。SVG 使用XML语法描述图形&#xff0c;是一种基于矢量路径的矢量图形格式&#xff0c;可以无损缩放而不失真1。…