
# 特性概述
#### 功能定义
灰度升级是一种支持优先升级部分节点的在线升级方式。通过先选择部分节点进行灰度升级，进入灰度观察期观察新版本稳定性，再升级剩余节点的方式，实现全部升级操作。
其核心实现包含以下三个维度：
- 系统表与函数兼容性
  - 针对大版本升级导致的系统表结构变更，将新/旧版本系统表结构及系统函数固化于二进制内。
  
  - 确保新旧版本二进制均能解析并使用新旧系统表元组。
   
- 二进制替换策略
  - 对于大版本升级和二进制升级涉及的新、旧二进制替换，优先灰度替换指定节点的二进制，观察系统运行稳定性。
  
  - 待系统运行一定时间后，再替换剩余节点的二进制。
   
- 操作系统与硬件升级协同
  - 涉及操作系统/硬件升级场景： 灰度升级部分节点前，需将目标节点的主实例切换至非灰度节点。
    
  
  - 仅数据库二进制升级场景：
    - 为了尽可能降低对于业务的影响，采用同一节点两套二进制共存机制，通过软连接切换实现进程版本的切换升级。
    
    - 业务中断时间控制：升级全部节点，业务中断时间不超过10s；采用-g或-h的方式，每次升级部分节点时，均会产生不超过10s的业务中断。
     
   
 
#### 用户场景
支持全业务操作。支持用户自定义灰度升级顺序，进行节点级滚动灰度升级。既可先升级备DN，升级成功后可主动进行主DN的切换，具备主动控制DN主备切换时机的能力。
#### 规格约束
1. 部署要求
   - 支持形态：3C1D。
   
   - 版本跨度：升级路径版本相差不超过2个C版本。
    
2. 环境条件
   - 业务负载：升级期间需保持业务空载。
   
   - 系统状态：集群健康状态、网络及硬件环境需满足运行标准。
    
3. 性能指标 一次性升级全部节点时，默认数据库数量下，升级总时长≤20分钟。
   
 
#### 技术架构
图1灰度升级技术架构   
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/figure/zh-cn_image_0000002590200994.png "点击放大")
图2灰度升级指定--auto_script参数自动生成脚本技术架构   
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/figure/zh-cn_image_0000002620720507.png "点击放大")
数据库升级体系向上对接数据库运维管理平台，通过标准化升级接口及专用工具gs_upgradectl对接DN和gsql，最终依托升级脚本完成数据库升级。
指定auto_script参数升级脚本在切换二进制之后自动生成，小版本升级也会生成脚本并执行。该参数为内部升级方式过度使用参数，故未对数据库运维管理平台开放使用。
为最小化二进制切换对业务的影响，采用分阶段的二进制切换机制：
1. 切换进程管理组件om_monitor和cm_agent；
2. 切换不影响业务的集群管理组件cm_server和ETCD；
3. 切换业务影响组件DN、CN和GTM。
 
