YashanDB滚动升级

简介: YashanDB支持通过yasboot工具实现数据库的滚动升级,无需停机即可将二进制文件更新到新版本。本文以23.3.1.0升级至23.3.1.1为例,详细介绍滚动升级流程。适用场景包括单机(主备)和分布式部署,需满足版本号前三位相同的要求。操作步骤涵盖全量备份、上传新版本安装包、升级yasom与yasagent组件、数据库升级及可选的后续操作(如环境变量更新)。升级过程中需注意校验dbcr目录一致性,并在失败时执行回退操作。具体命令和参数说明请参考官方文档链接。

本文内容来自YashanDB官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%87%E7%BA%A7/%E5%8D%87%E7%BA%A7/%E5%8D%87%E7%BA%A7%E6%93%8D%E4%BD%9C/%E6%BB%9A%E5%8A%A8%E5%8D%87%E7%BA%A7.html

YashanDB支持通过yasboot工具滚动升级已经部署的数据库,在数据库不停机的情况下,将数据库二进制文件升级到新版本。

本文将以23.3.1.0版本升级到23.3.1.1版本为例介绍数据库的滚动升级方式。

注意事项


  • 滚动升级适用范围:
    • 单机(主备)部署:主备形态部署的数据库从23.2.0.0及以上版本向版本号前三位相同但第四位不同的新版本进行升级。
    • 分布式部署:MN和DN均为主备部署的数据库从23.2.3.0及以上版本向23.2.3.100及以上且版本号前三位相同但第四位不同的版本进行升级。
  • 请完成升级前准备要求的各项工作后再进行升级。
  • 升级时会校验新旧数据库的dbcr目录是否相同,如果不相同则无法滚动升级。此时滚动升级不会执行,无需回退。
  • 升级过程需使用YashanDB内置的yasboot工具,该工具的命令选项含义及说明请查阅yasboot
  • 若升级未成功,请执行滚动升级回退恢复环境。如果回退仍不成功,请联系YashanDB技术支持解决。
  • 升级后,需根据运行日志告警判断是否使用过时参数,告警内容请查阅参数配置中参数初始化章节示例。若使用了过时参数,需根据配置参数中对应参数的介绍判断该参数是否因改名而过时,并且是否需要将该过时参数调整为对应的新参数。若新参数未配置,则过时参数的配置值将自动转换为新参数值。

操作步骤


除特殊说明,以下步骤均在yasboot工具所在的服务器(已存在hosts.toml文件)上操作,且命令中的路径、用户、密码等需更换为实际值。

# 步骤1:执行全量备份

YashanDB提供两种备份的方式,分别是通过SQL语句和使用yasrman工具,如需了解更多有关备份的语法及说明请查阅备份恢复

  • SQL语句方式:

    SQL语句执行备份需登录数据库实例进行操作,可通过执行如下语句执行全量备份:

    BACKUP DATABASE FULL FORMAT '/home/yashan/full_20221123' TAG 'full' PARALLELISM 3;
    

    Copied!

  • yasrman工具方式:

    使用yasrman工具进行全量备份须确保在yasrman工具所在服务器上操作,可通过执行如下命令执行全量备份:

    
    $ yasrman sys/password@IP:port -c "backup cluster tag 'full_1' format 'full_bak_1'" -D /home/yashan/catalog
    

    Copied!

# 步骤2:上传新版本安装包

  1. 创建一个空目录,该目录将作为升级安装包的临时存放路径。

    $ mkdir ~/tmp_upgrade
    

    Copied!

  2. 将新版安装包上传至该目录中。

  3. 进入升级安装包的存放目录并解压安装包。

    $ cd ~/tmp_upgrade
    $ tar zxf yashandb-23.3.1.1-linux-x86_64.tar.gz
    

    Copied!

# 步骤3:升级yasom与yasagent

以下操作均在升级安装包的存放目录中执行。

  1. 查看当前yasom与yasagent版本。

    ```
    $ ps -ef | grep -E "yasom|yasagent" | grep -v grep
    yashan 102280 1 0 16:24 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.0/bin/yasagent --init -c yashandb -l 192.168.1.2:1676 --host-id host0001 -k -d
    yashan 102323 1 0 16:24 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.0/bin/yasom --init -c yashandb -l 192.168.1.2:1675 -k -d

    $ /data/yashan/yasdb_home/yashandb/23.3.1.0/bin/yasom -h
    Usages: yasom []

    yasom daemon process, version: Debug 23.3.1.0

```

Copied!
  1. 升级yasom与yasagent。

    $ ./bin/yasboot package upgrade -t /home/yashan/install/hosts.toml -p yashandb-23.3.1.1-linux-x86_64.tar.gz
    upgrade package...
    install version: yashandb 23.3.1.1
    host0001 100% [====================================================================]    3s
    upgrade host to yasom...
    

    Copied!

    参数介绍:

    -t, --toml  需要服务器配置文件hosts.toml,此处指部署旧版本时生成的hosts.toml文件
    -p, --package  升级软件包的绝对路径
    

    Copied!

  2. 检查yasom与yasagent升级后的版本。

    ```
    $ ps -ef | grep -E "yasom|yasagent" | grep -v grep
    yashan 103607 1 0 16:32 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.1/bin/yasagent -c yashandb -d
    yashan 103650 1 0 16:32 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.1/bin/yasom -c yashandb -d

```

Copied!

# 步骤4:升级数据库

以下操作均在升级安装包的存放目录中执行。

Caution:

数据库升级过程中出现任何错误,请执行滚动升级回退恢复环境,升级成功后无法回退。

  1. 查看当前数据库版本。

    ```
    $ ./bin/yasboot sql -d sys/password@192.168.1.2:1688 -s 'select version from v$instance;'

    VERSION

    Release 23.3.1.0 x86_64

```

Copied!
  1. 升级数据库。

    $ ./bin/yasboot cluster upgrade --cluster yashandb --rolling
    type | uuid             | name                | hostid | index    | status  | return_code | progress | cost 
    -------------------------------------------------------------------------------------------------------------
    task | 9d0041edd55f7d4f | UpgradeYasdbCluster | -      | yashandb | SUCCESS | 0           | 100      | 23   
    ------+------------------+---------------------+--------+----------+---------+-------------+----------+------
    task completed, status: SUCCESS
    

    Copied!

    Note

    使用--keep-primary参数可以确保滚动升级后集群的主库仍为升级前的主库。

  2. 检查数据库升级后的版本。

    ```
    $ ./bin/yasboot sql -d sys/password@192.168.1.2:1688 -s 'select version from v$instance;'

    VERSION

    Release 23.3.1.1 x86_64

```

Copied!

# 步骤5(可选):升级后操作

  • 更新环境变量

    升级操作不会修改服务器的YASDB_HOMEYASDB_DATALD_LIBRARY_PATH以及PATH等环境变量,若配置过环境变量,升级后需更新为新版本数据库相应的环境变量,若不更新直接使用yasdb/yasql等命令会继续指向旧版本数据库

  • 开启或关闭某些配置

    若为顺利执行升级操作而临时调整过某些配置(例如关闭仲裁),在升级完成后应按需还原配置(例如重新开启仲裁)。

相关文章
|
5月前
|
存储 关系型数据库 数据挖掘
【瑶池数据库动手活动及话题本周精选(体验ADB、 SelectDB,参与 RDS 迁移训练营)】(4.21-4.27)
本文为 “瑶池数据库动手活动及话题精选” 系列第一期,聚焦 SelectDB 日志分析、AnalyticDB Zero-ETL 集成、RDS 迁移训练营三大实战,设积分、实物等多重奖励,同步开启话题互动。点击链接参与,每周解锁数据库实战新场景。
|
5月前
|
SQL 存储 关系型数据库
SQL优化策略与实践:组合索引与最左前缀原则详解
本文介绍了SQL优化的多种方式,包括优化查询语句(避免使用SELECT *、减少数据处理量)、使用索引(创建合适索引类型)、查询缓存、优化表结构、使用存储过程和触发器、批量处理以及分析和监控数据库性能。同时,文章详细讲解了组合索引的概念及其最左前缀原则,即MySQL从索引的最左列开始匹配条件,若跳过最左列,则索引失效。通过示例代码,展示了如何在实际场景中应用这些优化策略,以提高数据库查询效率和系统响应速度。
181 10
|
5月前
|
人工智能 程序员 测试技术
AI 时代,为什么编程能力≠ 开发门槛
在 2.0 阶段,我们目标是实现面向任务的协同编码模式,人的主要职责转变为任务的下发、干预以及最后结果的审查。在这个过程中,人的实际工作量开始减轻,AI 工作的占比显著提升。目前的 2.0 版本是我们最近上线的。
484 93
|
5月前
|
人工智能 自然语言处理 运维
Bolt.diy 一键部署,“一句话”实现全栈开发
Bolt.diy 是 Bolt.new 的开源版本,提供更高灵活性与可定制性。通过自然语言交互简化开发流程,支持全栈开发及二次开发,使零基础开发者也能实现从创意到云端部署的完整链路。本方案基于阿里云函数计算 FC 搭建,集成百炼模型服务,快速完成云端部署。用户可通过对话开启首个项目,两步完成部署并获300社区积分。方案优势包括多模型适配、高度定制化、全栈开发支持及智能化辅助工具,助力高效开发与创新。
712 102
|
6月前
|
缓存 运维 监控
解决隐式内存占用难题
本文详细介绍了在云原生和容器化部署环境中,内存管理和性能优化所面临的挑战及相应的解决方案。
709 193
解决隐式内存占用难题
|
5月前
|
消息中间件 人工智能 运维
乐言科技:云原生加速电商行业赋能,云消息队列助力降本 37%
乐言科技依托云原生架构及阿里云云原生产品体系,实现基础设施与业务解耦以及弹性调度,在提升业务稳定性的同时,显著增加研发效能并降低运维成本,加速电商客户定制化需求交付,推动云计算与 AI 技术在电商领域的深度融合。
371 102
|
5月前
|
监控 算法 测试技术
突破极限: 高负载场景下的单机300M多行正则日志采集不是梦
在当今数字化时代,日志数据已成为企业 IT 运营和业务分析的关键资源。然而,随着业务规模的扩大和系统复杂度的提升,日志数据的体量呈现爆发式增长,给日志采集和处理系统带来了巨大挑战。
472 99
|
5月前
|
机器学习/深度学习 存储 算法
【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
这篇文章详细解析了力扣热题 347——前 K 个高频元素的三种解法:哈希表+小顶堆、哈希表+快速排序和哈希表+桶排序。每种方法都附有清晰的思路讲解和 Go 语言代码实现。小顶堆方法时间复杂度为 O(n log k),适合处理大规模数据;快速排序方法时间复杂度为 O(n log n),适用于数据量较小的场景;桶排序方法在特定条件下能达到线性时间复杂度 O(n)。文章通过对比分析,帮助读者根据实际需求选择最优解法,并提供了完整的代码示例,是一篇非常实用的算法学习资料。
335 90
|
5月前
|
Kubernetes 数据可视化 Java
SAE 实现应用发布全过程可观测
本文聚焦阿里云Serverless应用引擎(SAE)用户在发布过程中的痛点,如“发布效率低、实例启动过程不透明”等问题。通过分步骤可视化解决方案,帮助用户明确问题、理解原因并最终解决,提升SAE平台使用体验。文章详细剖析了发布过程慢、信息透出不足及实例启动黑盒等痛点,并提出通过可观测、可解释和可优化的策略解决问题,同时展示了具体实现效果与后续优化规划。
433 68
|
5月前
|
人工智能 自然语言处理 运维
智能体Agent:用自然语言重构数据开发
本文分享如何基于利用MCP协议,配置MCP Server,以调用大数据开发与治理平台DataWorks Open API搭建智能体Agent,实现通过自然语言完成数据集成与数据开发等任务。文章还介绍了MCP协议的基本知识,帮助大家了解背后实现原理。大家可以通过自行配置体验数据工作流智能自动化运行。
641 50
智能体Agent:用自然语言重构数据开发