当前位置: 首页 > news >正文

【YashanDB】单机版数据库升级测试

【YashanDB】单机版数据库升级测试

背景

2025年8月22号,Yashan总算是通过了安全可靠认证,但是信创市场留给Yashan的份额已经不多了。第一份安可名单出来,很多客户连PoC测试都要求必须是安可名单的才给测试,所以第一批进入安可名单的厂商可以大范围采集真实的用户场景,然后改进自己的产品,尤其是在替O的O兼容性能力上。而Yashan由于覆盖客户较少,虽然从文档上看,似乎非常像O,但是毕竟缺少真实场景的打磨,数据库内核研发人员永远想不到应用开发人员会如何去用数据库的各种特性。

刚好我这边积累了大量的ORACLE存储过程,顺便用Yashan官方的迁移工具YMP迁移看看到底兼容度如何,结果却发现一百多个PACKAGE几乎全军覆没,全部是不兼容。一看原因,package里定义subtype语句不支持,然后其他所有包都引用了这个subtype。Yashan咋连这种基础需求都没识别到?翻官方文档,发现2025 年 7 月 18 日发布的v23.4.2.100版本才支持subype特性,但官方当前最新可下载的版本是v23.4.1.102 (截止到本文发出的2025年10月26号仍然是这个版本)。

于是注册了个YashanDB 服务平台的账号,给Yashan走了个工单,问最新版下载地址在哪,工单回复说:

您好,官网是可以免费下载企业版介质的,最新版本的软件包我们一般是面向企业用户开放的。若您有其他特殊场景的需求,您留个联系方式,回头我们跟您联系下。

然后我就关闭了工单,隔天客服就打电话来了,说可以发安装包给我,看来Yashan还是在积极争取所有可能的潜在客户。

所以本文正好来测试一下,yashan数据库的升级。

升级实操

官方文档:

  1. 升级前准备
  2. 离线升级

这次升级不想太折腾,没去弄什么滚动升级,单机版也不需要弄共享集群相关操作,就尽量按照官方文档一步一步操作了。

其实我操作了一轮,总结下来,正常情况对于空闲的且正常的测试环境,只需要进行下面几步操作

  1. 上传并解压新版本包
    搞个单独的目录
cd /home/yashan
mkdir tmp_upgrade
cd tmp_upgrade
tar -xf yashandb-23.4.2.104-linux-x86_64.tar.gz
  1. 确保数据库当前是open状态
yasboot sql -d sys/********@192.168.1.2:1688 -s 'select status from v$instance;'
  1. 关闭monit
yasboot monit stop -c yashandb
[yashan@kylinv10sp3-node1 tmp_upgrade]$ yasboot monit stop -c yashandbtype | uuid             | name            | hostid | index    | status  | return_code | progress | cost
---------------------------------------------------------------------------------------------------------task | 9e37fb6ccbae5c48 | MonitParentStop | -      | yashandb | WAITING | -           | 0        | -
------+------------------+-----------------+--------+----------+---------+-------------+----------+------
已杀死
[yashan@kylinv10sp3-node1 tmp_upgrade]$ 
  1. 升级package
    这一步操作会自动停止agent和om,然后安装新版本的agent和om到新的目录,再启动新版本的agent和om。注意这里的hosts.toml是之前版本安装时的安装文件目录里面的
./bin/yasboot package upgrade -t /opt/software/yashandb/hosts.toml
[yashan@kylinv10sp3-node1 tmp_upgrade]$ ./bin/yasboot package upgrade -t /opt/software/yashandb/hosts.toml
upgrade package...
install version: yashandb 23.4.2.104
upgrade host to yasom...
[yashan@kylinv10sp3-node1 tmp_upgrade]$
  1. 升级数据库
    这一步会更新数据库的而二进制程序和元数据版本,升级完后还是启动状态,如果加--rolling则表示进行不停机的滚动升级(滚动升级要求见官方文档-滚动升级)
./bin/yasboot cluster upgrade --cluster yashandb
[yashan@kylinv10sp3-node1 tmp_upgrade]$ ./bin/yasboot cluster upgrade --cluster yashandb
Database Upgrade Prompt:
1. The data will update
2. It is recommended to perform a full backup before the upgrade.
3. If the upgrade fails, please contact yashandb technical support.
Please read the above information and then confirm to continue the upgrade.
[yes/no]: yes
execute precheck task:
task completed, status: SUCCESS
precheck successfully, now ready to upgrade:
+-------------------------------------------------------------------------------------------------------------+
| type | uuid             | name                | hostid | index    | status  | return_code | progress | cost |
+-------------------------------------------------------------------------------------------------------------+
| task | 81da00cc3d768f58 | UpgradeYasdbCluster | -      | yashandb | SUCCESS | 0           | 100      | 71   |
+------+------------------+---------------------+--------+----------+---------+-------------+----------+------+
task completed, status: SUCCESS
[yashan@kylinv10sp3-node1 tmp_upgrade]$ 
  1. 修改环境变量YASDB_HOME,指向新版本目录
vi .bashrc
export YASDB_HOME=/home/yashan/yasdb_home/yashandb/23.4.2.104

如果不做这一步,yasql可能仍然还会是旧版本的

官方文档里有很多配置修改和检查都是针对集群的,而且还弄了个备份来兜底,我这个测试环境无所谓,坏了大不了铲了重装,就没去干那些操作。

异常处理

如果升级前数据库不为open状态,比如数据库已经手动关闭了,那么升级package还是会成功,升级数据库会失败,此时需要回滚package,然后启动数据库,再重新升级

[yashan@kylinv10sp3-node1 tmp_upgrade]$ ./bin/yasboot cluster upgrade --cluster yashandb
Database Upgrade Prompt:
1. The data will update
2. It is recommended to perform a full backup before the upgrade.
3. If the upgrade fails, please contact yashandb technical support.
Please read the above information and then confirm to continue the upgrade.
[yes/no]: yes
cannot get db version
# 由于是关闭的,无法获取数据库版本,所以失败
[yashan@kylinv10sp3-node1 tmp_upgrade]$ yasboot cluster start -c yashandb
gob: type mismatch in decoder: want struct type taskpub.GetTaskReq; got non-struct
# 在升级了package后直接启动数据库会报错,所以必须回滚package
[yashan@kylinv10sp3-node1 tmp_upgrade]$ ./bin/yasboot package rollback -c yashandb -t /opt/software/yashandb/hosts.toml
rollback package...
[yashan@kylinv10sp3-node1 tmp_upgrade]$ yasboot cluster start -c yashandbtype | uuid             | name              | hostid | index    | status  | return_code | progress | cost
-----------------------------------------------------------------------------------------------------------task | 4349fb6d729ab7c1 | StartYasdbCluster | -      | yashandb | SUCCESS | 0           | 100      | 23
------+------------------+-------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@kylinv10sp3-node1 tmp_upgrade]$

总结

YashanDB的单机升级操作还算是比较简单,基本没遇到什么坑,这对于国产数据库快速迭代需求是非常重要的。
在ORACLE兼容性赛道上,Yashandb绝对是不容忽视的一批黑马,但是建议还是甲方们还是拿自己的应用软件去迁移一下试试。这和所有的国产数据库一样,支持的ORACLE语法和函数再多,都无法保证在多种语法和函数混合使用下的结果一致性。当然只要数据库厂商足够给力,这种语法和函数的兼容性能力其实是最容易做的。所以数据库升级几乎是无可避免的事。有哪家数据库从开始去甲方测试重度ORACLE用法的软件,到甲方软件正式上线这个软件,是没换过数据库版本的?

  • 本文作者: DarkAthena
  • 本文链接: https://www.darkathena.top/archives/yashandb-upgrade-simple
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处
http://www.dtcms.com/a/532315.html

相关文章:

  • 张家口百度免费做网站可以做家装设计的网站
  • F-INR: Functional Tensor Decomposition for Implicit Neural Representations
  • 电容的串联、并联
  • 如何解决 pip install -e . 安装报错 后端不支持可编辑安装(PEP 660)问题
  • 工业和信息部网站备案基于python网站开发
  • 网站建设维护是啥意思自己怎么做网页
  • 贪心 - 后篇
  • 【C++】stack和queue:使用OJ题模拟实现
  • 在百度搜索到自己的网站网站搭建团队
  • 从零开始在云服务器上部署Gitlab
  • Qwen3 Embedding论文解读
  • Binlog
  • 营销型网站建设与网页设计一般网站的宽度是多少像素
  • Hive数据仓库架构原理深度解析与核心实践指南
  • C++容器list
  • dz做网站wordpress只显示标题插件
  • Linux使用VSCode开发Linux驱动,安装了C/C++,但是找不到Edit Configuration的解决办法
  • 亚马逊做图片链接的网站深圳交易服务中心官网
  • Shell脚本实战:文件统计与进程监控
  • 长沙网站开发的网站茶叶网站模板
  • STM32——按钮实验
  • 入门做外贸是先建网站还是先参展北京软件编程培训机构
  • 文案撰写网站静态网站模板古典
  • 网站建设浦东wordpress页面顶部登录
  • Linux修炼:库制作与原理(一)
  • 本地安装yolo算法环境的步骤
  • 8.1 时钟树
  • perl网站建设南宁网站定制
  • 计算机网络自顶向下方法6——应用层 进程通信与运输服务
  • HTTP 常考问题简洁回答(速记版)