首批通过分布式安全可靠测评,为关键业务系统打造
发起集群级备份
更新时间:2026-04-07 20:57:20
obshell 发起 OceanBase 数据库的集群级(所有租户)备份支持两种方式:
通过调用 API 发起备份
通过 obshell 命令发起备份
本文将以一个 3 副本的 OceanBase 集群为例,介绍如何通过 obshell 发起集群级备份。
前提条件
OceanBase 集群已被 obshell 运维管理,详细的判断方法及接管操作可参见 接管非 obshell 部署集群。
OceanBase 集群的所有 OBServer 节点和 obshell 都正常运行。
部署模式
本文中三台机器的使用情况如下(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 混合加密 一文对请求进行加密,并在 curl 命令中配置加密后的请求头部(${request_headers})和请求体(${request_body})。
步骤 1:(可选)设置集群级备份配置
调用任一 obshell 的 /api/v1/obcluster/backup/config 接口可以进行集群级备份配置。
说明
若之前已配置过集群级备份,则不需要多次调用该接口。
命令行中调用对应 API 接口的说明可参见 设置集群级备份配置。该接口会创建一个异步任务,查看任务进度的方法可参见 获取任务的详细信息。等待任务完成,则配置完成。
[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/obcluster/backup/config
加密前的请求体内容如下:
{
"backup_base_uri":"file:///data/backup",
"log_archive_concurrency":50
}
通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 设置集群级备份配置。
...
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.post_cluster_backup_config_sync(
"file:///data/backup",
log_archive_concurrency=100,
)
...
通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 设置集群级备份配置。
...
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
request := client.V1().NewClusterBackupConfigPostRequest("file:///data/backup")
request.SetArchiveLagTarget("10s").SetLogArchiveConcurrency(100).
dag, err := client.V1().ClusterBackupConfigSyncWithRequest(request)
...
步骤 2:发起集群级备份
调用任一 obshell 的 /api/v1/obcluster/backup 接口可以发起集群级备份。
命令行中调用对应 API 接口的说明可参见 发起集群级备份。该接口会创建一个异步任务,查看任务进度的方法可参见 获取任务的详细信息。等待任务完成,则备份结束。
[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/obcluster/backup
加密前的请求体内容如下:
{
"mode":"full"
}
通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 发起集群级备份。
...
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.start_cluster_backup_sync("full")
...
通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 发起集群级备份。
...
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
request := client.V1().NewClusterBackupRequest()
request.SetBackupMode("full")
dag, err := client.V1().ClusterBackupWithRequest(request)
...
步骤 3:查看集群级备份任务
调用任一 obshell 的 /api/v1/obcluster/backup/overview 接口可以查看集群级备份任务。
命令行中调用对应 API 接口的说明可参见 查看集群级备份任务。
[admin@test001 ~]$ curl -H "Content-Type: application/json" -H 'X-OCS-Header:${request_headers}' -X GET http://10.10.10.1:2886/api/v1/obcluster/backup/overview
通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 查看集群级备份任务。
...
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.get_cluster_backup_overview()
...
通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 查看集群级备份任务。
...
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
res, err := client.V1().GetClusterBackupOverview()
...
通过 obshell 命令备份
步骤 1:执行集群备份
在任一节点调用 obshell cluster backup 命令,即可完成备份配置并触发一次备份。命令详见 obshell 集群命令组 中 obshell cluster backup 部分介绍。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster backup -u 'file:///data/backup'
步骤 2:查询备份任务
所用命令的详细介绍可参见 obshell 备份命令组 中 obshell backup show 部分。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell backup show