
# 批量实例内核版本升级 - UpgradingKernelVersionsofInstancesinBatches
#### 功能介绍
GaussDB批量实例版本升级。包括灰度升级，就地升级、热补丁升级三种升级方式。 批量实例可升级版本大于当前所有实例的最小引擎版本，且选择的所有实例，其升级方式和操作方式要保持一致。若批量实例升级方式是灰度升级，默认升级所有AZ和分片。
- 就地升级：就地升级需要停止业务进行，会一次性升级集群中所有节点。就地升级需要暂停业务30分钟来升级。
- 灰度升级：
  每个主DN或者CN组件升级就有一次10秒业务中断。升级过程均是先管理面，再数据面，由备到主的升级方式。
  - 升级自动提交：所有节点进程一起升级，在升级过程中有大概10秒的业务中断，不阻塞其他业务操作。
  
  - 升级待观察：升级待观察，将数据库升级过程细分为升级，提交两个阶段。
    - 升级阶段可以根据部署方式细分为按分片或者按AZ的滚动升级。
      - 分布式实例：根据分片数滚动升级。批量实例升级方式下，默认升级所有分片。
      
      - 集中式实例：根据AZ数进行滚动升级。批量实例升级方式下，默认升级所有分片。
       
    
    - 提交阶段可以对升级完成后的实例进行业务测试，根据需要可以选择提交升级或者升级回退。
      - 提交升级：在升级完成进入提交阶段时，业务测试正常后提交升级，完成本次升级流程。
      
      - 升级回退：在升级完成进入提交阶段时，可以根据需要回退本次升级，回退到升级前的版本。
       
     
    
- 热补丁升级：
  - 升级自动提交：热补丁自动升级并提交，中间无业务中断，仅修复产品BUG。
  
  - 升级回退：热补丁回退，无业务中断时间。
   
 
- 调用接口前，您需要了解API [认证鉴权](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_011.html)。
- 调用接口前，您需要提前获取到[地区和终端节点](https://developer.huaweicloud.com/endpoint)。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=GaussDBforopenGauss&api=BatchUpgradeInstanceVersion)中调试该接口。
#### URI
PUT /v3/{project_id}/instances/db-upgrade
表1参数说明 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 租户在某一Region下的项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_196.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为32个字符。 **默认取值**： 不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token。 通过调用IAM服务[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取。 请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值** **：** 不涉及。 |
| X-Language   | 否    | String | **参数解释：** 指定接口返回信息的语言类型。 **约束限制：** 不涉及。 **取值范围：** - **zh-cn**：中文  - **en-us**：英文   **默认取值** **：** **en-us**                     |
   
表3请求Body参数 
| 参数             | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| instance_ids   | 是    | Array of strings | **参数解释：** 批量实例ID。获取方式请参考[查询数据库实例列表 - QueryingDBInstances](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_328.html)。 **约束限制：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| upgrade_type   | 是    | String           | **参数解释：** 实例升级类型。包括就地升级，灰度升级、热补丁升级三种。 **约束限制：** 区分大小写。 **取值范围：** - grey：灰度升级。  - inplace：就地升级。  - hotfix：热补丁升级。   **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                   |
| upgrade_action | 否    | String           | **参数解释：** 实例升级操作。灰度升级包括升级自动提交，升级待观察，提交升级，升级回退四种。 **约束限制：** 1. 就地升级无需传值。  2. 区分大小写。   **取值范围：** - upgrade：升级。  - upgradeAutoCommit：升级自动提交。  - commit：提交。  - rollback：回滚。   **默认取值：** 不涉及。 |
| target_version | 否    | String           | **参数解释：** 批量实例升级目标版本。 **约束限制：** 如果未传值，灰度升级和就地升级默认升级到当前实例的优选三位版本，如果是大版本升级，灰度升级和就地升级必填此参数。热补丁升级未传该值时，默认升级实例所有可升级的热补丁。获取方法请参考[查询批量实例可升级的版本和升级类型 - QueryingUpgradeTypesandVersionsThat InstancesCanBeUpgradedtoinBatches](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_329.html)。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
#### 响应参数
表4响应参数 
| 参数                  | 参数类型             | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| job_ids             | Array of strings | **参数解释：** 任务ID。                                                                                                                         |
| succeeded_num       | Integer          | **参数解释：** 下发成功的实例数量。单位：个。 **取值范围：** 不涉及。  |
| failed_num          | Integer          | **参数解释：** 下发失败的实例数量。单位：个。 **取值范围：** 不涉及。 |
| failed_instance_ids | Array of strings | **参数解释：** 下发失败的实例ID列表。                                                                                                                 |
| error_messages      | Array of strings | **参数解释：** 下发失败错误信息列表。                                                                                                                  |
   
#### 请求示例
- 批量实例就地升级
  ```
  PUT https://gaussdb-opengauss.cn-north-4.myhuaweicloud.com/v3/0483b6b16e954cb88930a360d2c4e663/instances/db-upgrade
  { 
    "instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14", "aa0ae5c47bf94834bf9e44138f7f995ain14" ], 
    "upgrade_type" : "inplace" , 
    "target_version" : "8.100.0" 
  }
  ```
  
- 批量实例灰度升级并采用升级待观察方式升级传参。
  ```
  PUT https://gaussdb-opengauss.cn-north-4.myhuaweicloud.com/v3/0483b6b16e954cb88930a360d2c4e663/instances/db-upgrade
  { 
    "instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14", "aa0ae5c47bf94834bf9e44138f7f995ain14" ], 
    "upgrade_type" : "grey", 
    "upgrade_action" : "upgrade", 
    "target_version" : "8.100.0" 
  }
  ```
  
- 批量实例灰度升级并采用回滚方式升级传参。
  ```
  PUT https://gaussdb-opengauss.cn-north-4.myhuaweicloud.com/v3/0483b6b16e954cb88930a360d2c4e663/instances/db-upgrade
  { 
    "instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14", "aa0ae5c47bf94834bf9e44138f7f995ain14" ], 
    "upgrade_type" : "grey", 
    "upgrade_action" : "rollback", 
    "target_version" : "8.100.0" 
  }
  ```
  
- 批量实例灰度升级并采用升级自动提交方式升级传参。
  ```
  PUT https://gaussdb-opengauss.cn-north-4.myhuaweicloud.com/v3/0483b6b16e954cb88930a360d2c4e663/instances/db-upgrade
  { 
    "instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14", "aa0ae5c47bf94834bf9e44138f7f995ain14" ], 
    "upgrade_type" : "grey", 
    "upgrade_action" : "upgradeAutoCommit", 
    "target_version" : "8.100.0" 
  }
  ```
  
- 批量实例热补丁升级并采用升级自动提交方式升级传参。
  ```
  PUT https://gaussdb-opengauss.cn-north-4.myhuaweicloud.com/v3/0483b6b16e954cb88930a360d2c4e663/instances/db-upgrade
  { 
    "instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14", "aa0ae5c47bf94834bf9e44138f7f995ain14" ], 
    "upgrade_type" : "hotfix", 
    "upgrade_action" : "upgradeAutoCommit" 
  }
  ```
  
 
- 批量实例热补丁升级回退并采用升级回退方式传参。
  ```
  PUT https://gaussdb-opengauss.cn-north-4.myhuaweicloud.com/v3/0483b6b16e954cb88930a360d2c4e663/instances/db-upgrade
  {
  "instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14", "aa0ae5c47bf94834bf9e44138f7f995ain14" ],
  "upgrade_type" : "hotfix",
  "upgrade_action" : "rollback"
  }
  ```
  
#### 响应示例
```
{ 
  "job_ids" : [ "2b414788a6004883a02390e2eb0ea227", "aa414788a6004883a02390e2eb0ea228" ], 
  "succeeded_num" : 2, 
  "failed_num" : 1, 
  "failed_instance_ids" : [ "cc0ae5c47bf94834bf9e44138f7f995ain14" ], 
  "error_messages" : [ "实例状态异常，无法进行该操作" ] 
}
```
#### 状态码
- 正常 202
  
- 异常 请参见[状态码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_194.html)。
  
 
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-gaussdb/gaussdb_api_195.html)。
