首批通过分布式安全可靠测评,为关键业务系统打造
停止 OceanBase 集群
更新时间:2026-04-10 11:58:35
本文将以一个 3 副本的 OceanBase 集群为例,介绍如何通过 obshell 停止 OceanBase 集群。
前提条件
OceanBase 集群已被 obshell 运维管理,详细的判断方法及接管操作可参见 接管非 obshell 部署集群。
OceanBase 集群的所有 OBServer 节点和 obshell 都正常运行。
部署模式
本文中三台机器的使用情况如下:
| 角色 | 机器 | 备注 |
|---|---|---|
| OBServer 节点 | 10.10.10.1 | OceanBase 数据库 zone1 |
| OBServer 节点 | 10.10.10.2 | OceanBase 数据库 zone2 |
| OBServer 节点 | 10.10.10.3 | OceanBase 数据库 zone3 |
通过 API 停止
说明
通过命令行命令调用 API 时,需注意以下信息:
调用集群内的任一 obshell 的 /api/v1/ob/stop 停止集群。
命令行命令调用对应 API 接口的说明可参见 停止集群。
通过 obshell-sdk-python 请求对应 API 方法的介绍可参见 停止集群。
通过 obshell-sdk-go 请求对应 API 方法的介绍可参见 停止集群。
场景 1:停止所有 observer 进程
[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/stop
加密前的请求体内容如下:
{
"scope": {
"type": "GLOBAL",
"target": ""
},
"force": true}
···
client = ClientSeta("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.stop_sync("GLOBAL", None, force=True) ## 调用 /api/v1/ob/stop
···
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewStopRequest(v1.SCOPE_GLOBAL).SetForce()
dag, err := client.V1().StopSyncWithRequest(req) // 调用 /api/v1/ob/stop
···
场景 2:停止某些 observer 进程
[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/stop
加密前的请求体内容如下:
{
"scope": {
"type": "SERVER",
"target": "10.10.10.1:2886,10.10.10.2:2886"
},
"force": true}
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.stop_sync("GLOBAL", None, force=True) ## 调用 /api/v1/ob/stop
···
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewStopRequest(v1.SERVER, "10.10.10.1:2886,10.10.10.2:2886").SetForce()
dag, err := client.V1().StopSyncWithRequest(req) // 调用 /api/v1/ob/stop
···
场景 3:停止某些 Zone 内的 observer 进程
[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/stop
加密前的请求体内容如下:
{
"scope": {
"type": "ZONE",
"target": "zone1"
},
"force": true}
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.stop_sync("ZONE", "zone1", force=True) ## 调用 /api/v1/ob/stop
···
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewStopRequest(v1.SCOPE_ZONE, "zone1").SetForce()
dag, err := client.V1().StopSyncWithRequest(req) // 调用 /api/v1/ob/stop
···
场景 4:隔离 OBServer 节点
[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/stop
加密前的请求体内容如下:
{
"scope": {
"type": "SERVER",
"target": "10.10.10.1:2886,10.10.10.2:2886"
}}
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.stop_sync("SERVER", "10.10.10.1:2886,10.10.10.2:2886") ## 调用 /api/v1/ob/stop
···
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewStopRequest(v1.SCOPE_SERVER, "10.10.10.1:2886,10.10.10.2:2886")
dag, err := client.V1().StopSyncWithRequest(req) // 调用 /api/v1/ob/stop
···
场景 5:隔离 Zone
[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/stop
加密前的请求体内容如下:
{
"scope": {
"type": "ZONE",
"target": "zone1"
}}
···
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.stop_sync("ZONE", "zone1") ## 调用 /api/v1/ob/stop
···
···
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
req := client.V1().NewStopRequest(v1.SCOPE_ZONE, "zone1")
dag, err := client.V1().StopSyncWithRequest(req) // 调用 /api/v1/ob/stop
···
通过 obshell 命令停止
场景 1:停止所有 observer 进程
在任一节点执行如下命令停止所有节点的 observer 进程。命令详情参见 obshell cluster stop。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster stop -a -f
场景 2:停止某些 observer 进程
在任一节点执行如下命令停止对应节点的 observer 进程。命令详情参见 obshell cluster stop。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster stop -s 10.10.10.1:2886,10.10.10.2:2886 -f
场景 3:停止某些 Zone 内的 observer 进程
在任一节点执行如下命令停止对应 Zone 内的 observer 进程。命令详情参见 obshell cluster stop。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster stop -z zone1 -f
场景 4:隔离 observer 节点
在任一节点执行如下命令隔离 observer 节点。命令详情参见 obshell cluster stop。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster stop -s 10.10.10.1:2886 -I
场景 5:隔离 Zone
在任一节点执行如下命令隔离 Zone。命令详情参见 obshell cluster stop。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell cluster stop -z zone1 -I