---
title: "升级 OceanBase 集群 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: 升级 OceanBase 集群 obshell 升级 OceanBase 数据库支持两种方式： 通过调用 API 升级 通过 obshell 命令升级 本文将以一个 3 副本的 OceanBase 集群为例，介绍如何通过 obshell 升级 OceanBase 集群。 前提条件 OceanBase 集群已被 obs…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.0

# 升级 OceanBase 集群

更新时间：2026-04-10 11:58:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/700.reference/1500.Components-and-Tools/100.manage/100.obshell/210.use-case/500.upgrade-oceanbase-cluster.md)  

obshell 升级 OceanBase 数据库支持两种方式：

- 通过调用 API 升级
 - 通过 obshell 命令升级

本文将以一个 3 副本的 OceanBase 集群为例，介绍如何通过 obshell 升级 OceanBase 集群。

## 前提条件

- OceanBase 集群已被 obshell 运维管理，详细的判断方法及接管操作可参见 [接管非 obshell 部署集群](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000671671)。
 - OceanBase 集群的所有 OBServer 节点和 obshell 都正常运行。
 - 升级前，保证 OceanBase 集群未处于租户合并中。

## 部署模式

本文中三台机器的使用情况如下（obshell 使用默认端口 2886）：

| 角色 | 机器 | 备注 |
| --- | --- | --- |
| OBServer 节点 | 10.10.10.1 | OceanBase 数据库 zone1 |
| OBServer 节点 | 10.10.10.2 | OceanBase 数据库 zone2 |
| OBServer 节点 | 10.10.10.3 | OceanBase 数据库 zone3 |

## 通过 API 升级

#### 说明

obshell 会对被调用的 API 进行安全校验。因此，您在每次调用 API 之前都需先参考 [API 混合加密](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000694620) 一文对请求进行加密，并在 curl 命令中配置加密后的请求头部（`${request_headers}`）和请求体（`${request_body}`）。

### 步骤 1：上传目标版本的 RPM 包

调用任一 obshell 的 `/api/v1/upgrade/package` 接口进行包的上传。OceanBase 集群升级时需要上传 `oceanbase-ce` 和 `oceanbase-ce-libs` 两个包。

    命令行命令   Python   GO

命令行中调用对应 API 接口的说明可参见 [上传 RPM 包](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000694636)。

```shell
[admin@test001 ~]$ curl -H 'X-OCS-Header:${request_headers}' -X POST -F "file=@/data/upgrade/oceanbase-ce-x.x.x.x-xxx.el7.x86_64.rpm" http://10.10.10.1:2886/api/v1/upgrade/package

```

```bash
[admin@test001 ~]$ curl -H 'X-OCS-Header:${request_headers}' -X POST -F "file=@/data/upgrade/oceanbase-ce-libs-x.x.x.x-xxx.el7.x86_64.rpm" http://10.10.10.1:2886/api/v1/upgrade/package

```

通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 [上传 RPM 包](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000904136)。

```python
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.upload_pkg("/data/upgrade/oceanbase-ce-x.x.x.x-xxx.el7.x86_64.rpm") # 调用 /api/v1/upgrade/package
client.v1.upload_pkg("/data/upgrade/oceanbase-ce-libs-x.x.x.x-xxx.el7.x86_64.rpm") # 调用 /api/v1/upgrade/package
···

```

通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 [上传 RPM 包](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000904163)。

```go
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewUploadPkgRequest("/data/upgrade/oceanbase-ce-x.x.x.x-xxx.el7.x86_64.rpm")
dag, err := client.V1().UploadPkgWithRequest(req)  // 调用 /api/v1/upgrade/package
req = client.V1().NewUploadPkgRequest("/data/upgrade/oceanbase-ce-libs-x.x.x.x-xxx.el7.x86_64.rpm")
dag, err = client.V1().UploadPkgWithRequest(req)  // 调用 /api/v1/upgrade/package
···

```

### 步骤 2：调用升级检查接口（可选）

调用任一 obshell 的 `/api/v1/ob/upgrade/check` 进行升级检查。包括检查环境、目标版本的包是否上传、升级所需制品是否齐全等。

命令行中调用对应 API 接口的说明可参见 [OceanBase 数据库升级检查](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000694612)。该接口会创建一个异步任务，查看任务进度参考 [获取任务的详细信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000694621)。等待任务完成，则升级检查完成。

```shell
[admin@test001 ~]$ curl -H "Content-Type: application/json" -H 'X-OCS-Header:${request_headers}' -X POST -d '${request_body}' http://10.10.10.1:2886/api/v1/ob/upgrade/check

```

通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 [OceanBase 数据库升级检查](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000904112)。

```python
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.upgrade_ob_check_sync("x.x.x.x", "xxx.el7")  # 调用 /api/v1/ob/upgrade/check
···

```

通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 [OceanBase 数据库升级检查](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000904139)。

```go
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewUpgradeObCheckRequest("x.x.x.x", "xxx.el7")
dag, err := client.V1().UpgradeObCheckSyncWithRequest(req)  // 调用 /api/v1/ob/upgrade/check
···

```

### 步骤 3：调用升级接口

调用任一 obshell 的 `/api/v1/ob/upgrade` 进行升级。

命令行中调用对应 API 接口的说明可参见 [升级 OceanBase 数据库](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000694614)。该接口会创建一个异步运维任务，查看任务进度参考 [获取任务的详细信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000694621)。等待任务完成，则升级完成。

```shell
[admin@test001 ~]$ curl -H "Content-Type: application/json" -H 'X-OCS-Header:${request_headers}' -X POST -d '${request_body}' http://10.10.10.1:2886/api/v1/ob/upgrade

```

通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 [升级 OceanBase 数据库](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000904114)。

```python
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.upgrade_ob_sync("x.x.x.x", "xxx.el7")  # 调用 /api/v1/ob/upgrade
···

```

通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 [升级 OceanBase 数据库](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000904141)。

```go
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewUpgradeObRequest("x.x.x.x", "xxx.el7")
dag, err := client.V1().UpgradeObSyncWithRequest(req)  // 调用 /api/v1/ob/upgrade
···

```

### 步骤 4：验证升级成功

1. 使用 root 用户登录 OceanBase 数据库的 sys 租户，执行如下命令查看数据库版本。

   ```shell
   obclient [oceanbase]> select build_version from oceanbase.dba_ob_servers;

   ```
 2. 执行如下命令查看 obshell 版本。

   ```shell
   obclient [oceanbase]> select version from ocs.all_agent;

   ```

### 完整代码示例

    Python   GO

```python
from obshell import ClientSet
from obshell.auth import PasswordAuth

client = ClientSet("10.10.10.1", PasswordAuth("****"))

# 上传升级所需包。
client.v1.upload_pkg("/data/upgrade/oceanbase-ce-x.x.x.x-xxx.el7.x86_64.rpm")
client.v1.upload_pkg("/data/upgrade/oceanbase-ce-libs-x.x.x.x-xxx.el7.x86_64.rpm")

# 升级前检查。
client.v1.upgrade_ob_check_sync("x.x.x.x", "xxx.el7")

# 升级 OceanBase 数据库。
client.v1.upgrade_ob_sync("x.x.x.x", "xxx.el7")

```

```go
package main

import (
    "github.com/oceanbase/obshell-sdk-go/services"
)

func main() {
    var err error // 生产环境中需要处理 error。

    // 创建 client 实例，节点地址为 '10.10.10.1'，端口为 2886。
    // 所在集群的 root@sys 密码为 '****'。
    client, err := services.NewClientWithPassword("10.10.10.1", 2886, "***")

    // 向集群上传 RPM 包。
    req1 := client.V1().NewUploadPkgRequest("/data/upgrade/oceanbase-ce-x.x.x.x-xxx.el7.x86_64.rpm")
    dag1, err := client.V1().UploadPkgWithRequest(req1)
    req2 := client.V1().NewUploadPkgRequest("/data/upgrade/oceanbase-ce-libs-x.x.x.x-xxx.el7.x86_64.rpm")
    dag2, err := client.V1().UploadPkgWithRequest(req2)

    // 升级前检查。
    req3 := client.V1().NewUpgradeObCheckRequest("x.x.x.x", "xxx.el7")
    dag3, err := client.V1().UpgradeObCheckSyncWithRequest(req3)

    // 升级 OceanBase 数据库。
    req4 := client.V1().NewUpgradeObRequest("x.x.x.x", "xxx.el7")
    dag4, err := client.V1().UpgradeObSyncWithRequest(req4)
}

```

## 通过 obshell 命令升级

### 步骤 1：调用升级命令执行升级

在任一节点调用 `obshell cluster upgrade` 命令，通过 `-d` 指定目标版本包的存放路径。命令详见 [obshell cluster upgrade](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000671675)。

```shell
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster upgrade -d /home/admin/oceanbase/upgrade/

```

### 步骤 2：验证升级成功

1. 使用 root 用户登录 OceanBase 数据库的 sys 租户，执行如下命令查看数据库版本。

   ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
