---
title: "删除节点 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: 删除节点 可以向 OceanBase 集群中删除节点，删除节点是添加节点的逆向操作，适用于弹性缩容场景和调整部署场景。 弹性缩容场景：集群中有资源富余时，可以通过调整 Unit 分布、缩减租户的 UNIT_NUM 等操作来减少节点的资源占用，并最终通过删除节点来下线机器。 调整部署场景：调整集群的部署架构时，如果调整…
---
切换语言

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

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

# 删除节点

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

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/600.manage/100.cluster-management/300.common-cluster-operations/500.delete-a-node.md)  

可以向 OceanBase 集群中删除节点，删除节点是添加节点的逆向操作，适用于弹性缩容场景和调整部署场景。

- 弹性缩容场景：集群中有资源富余时，可以通过调整 Unit 分布、缩减租户的 `UNIT_NUM` 等操作来减少节点的资源占用，并最终通过删除节点来下线机器。
 - 调整部署场景：调整集群的部署架构时，如果调整租户的 Locality 属性后使得某 Zone 内不再分布有任何租户的 Unit，可以通过 Stop Zone -> Delete Server -> Delete Zone 等一系列操作下线该 Zone。

## 注意事项

Delete Server 操作涉及到负载均衡，被删除的节点上的资源单元（称为 Unit ）会在同一个 Zone 中进行迁移。Unit 的迁移动作是 Unit 自动均衡的过程，主要由 Root Service 控制。待 Unit 迁移成功，Delete Server 操作即可执行成功。如果您想要选择待删除节点上 Unit 迁移的目标机器，可以手动执行 Unit 迁移。

#### 注意

删除节点会减少可用资源，如果同 Zone 中其他节点的剩余资源不足以容纳待删除节点上的 Unit，将会导致 Unit 迁移失败，故在执行删除节点之前建议先查询 `oceanbase.GV$OB_SERVERS` 视图判断 Zone 内各节点的资源使用情况。

Unit 自动迁移过程中，迁移任务会占用迁出节点与迁入节点的网络资源和 IO 资源，从而使迁移流量与业务流量叠加，并导致业务流量受影响。为了避免业务流程受影响：

- 可以先执行 Stop Zone 操作后再执行 Delete Server 操作，确保两种流量不发生叠加。

  Stop Zone 的相关操作请参见 [隔离节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639934)。
 - 也可以调整迁移任务的相关配置项来控制迁移速度。

  迁移任务相关的配置项如下表所示。

  | 配置项名 | 描述 |
  | --- | --- |
  | balancer_idle_time | 租户级配置项，可以控制每次发起迁移任务的时间间隔。默认值为 10s，表示 10 秒，取值范围为 [10s, +∞)。 |
  | sys_bkgd_net_percentage | 集群级配置项，可以控制迁移任务占用网卡带宽的百分比。默认值为 60，取值范围为 [0, 100]。 |

  查看并修改各配置项值的相关操作请参见 [修改集群配置项](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639933)。

## 操作步骤

1. 使用 `root` 用户登录到集群的 `sys` 租户。

   连接示例如下，连接数据库时请以实际环境为准。

   ```shell
   obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A

   ```

   有关更加详细的连接数据库的操作指引，参见 [连接数据库概述（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640069) 和 [连接数据库概述（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640028)。
 2. （可选）手动迁移待删除节点上的 Unit。

   #### 注意

   下线节点时，建议您先手动迁移待删除的节点上的 Unit 后再执行 Delete Server 操作。

      1. 查看当前 Unit 分布，获取待迁移的 Unit 的 ID。

        ```shell
        obclient [(none)]> SELECT UNIT_ID,TENANT_ID,STATUS,ZONE,SVR_IP FROM oceanbase.DBA_OB_UNITS;
        +---------+-----------+--------+-------+----------------+
        | UNIT_ID | TENANT_ID | STATUS | ZONE  | SVR_IP         |
        +---------+-----------+--------+-------+----------------+
        |       1 |         1 | ACTIVE | zone1 |   xx.xx.xx.237 |
        |       2 |         1 | ACTIVE | zone2 |   xx.xx.xx.238 |
        |       3 |         1 | ACTIVE | zone3 |   xx.xx.xx.218 |
        |    1001 |      1002 | ACTIVE | zone3 |   xx.xx.xx.218 |
        |    1002 |      1002 | ACTIVE | zone1 |   xx.xx.xx.237 |
        |    1003 |      1002 | ACTIVE | zone2 |   xx.xx.xx.238 |
        |    1010 |      1008 | ACTIVE | zone3 |   xx.xx.xx.218 |
        |    1011 |      1008 | ACTIVE | zone2 |   xx.xx.xx.238 |
        |    1012 |      1008 | ACTIVE | zone1 |   xx.xx.xx.237 |
        |    1013 |      1010 | ACTIVE | zone3 |   xx.xx.xx.218 |
        |    1014 |      1010 | ACTIVE | zone1 |   xx.xx.xx.237 |
        |    1015 |      1010 | ACTIVE | zone2 |   xx.xx.xx.238 |
        |    1016 |      NULL | ACTIVE | zone1 |   xx.xx.xx.237 |
        |    1017 |      NULL | ACTIVE | zone2 |   xx.xx.xx.238 |
        +---------+-----------+--------+-------+----------------+
        14 rows in set

        ```

        其中：

             - `UNIT_ID`：表示节点上各 Unit 的 ID。
             - `TENANT_ID`：表示该 Unit 所属的租户 ID。如果值为 `NULL`，表示当前 Unit 不属于任何租户。
             - `STATUS`：表示该 Unit 当前的状态：

                     - `ACTIVE`：正常状态
                     - `DELETING`：正在删除状态
             - `ZONE`：表示该 Unit 所属的 Zone。
             - `SVR_IP`：表示该 Unit 所属的节点 IP。

        有关 `DBA_OB_UNITS` 视图的更多说明，请参见 [DBA_OB_UNITS](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000641245)。
      2. 根据查询结果，执行以下命令，手动迁移 Unit。

        语句如下：

        ```shell
        obclient [(none)]> ALTER SYSTEM MIGRATE UNIT = unit_id DESTINATION = 'svr_ip:svr_port';

        ```

        相关参数说明如下：

             - `unit_id`：表示待迁移的 Unit 的 ID。
             - `svr_ip`：指定 Unit 迁移后的节点的 IP。
             - `svr_port`：指定 Unit 迁移后的节点的 RPC 端口。

        将 ID 为 `1012` 的 Unit 迁移到同 Zone 的 `172.xx.xx.xx` 服务器上的示例如下：

        ```shell
        obclient [(none)]> ALTER SYSTEM MIGRATE UNIT = 1012 DESTINATION = '172.xx.xx.xx:2882';

        ```

        该命令可多次执行，如果手动迁移 Unit 失败，可以根据报错信息解决问题后再重新执行。

        更多关于 Unit 迁移的操作及说明，请参见 [Unit 迁移](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640369)。
 3. 执行以下命令，删除节点。

   语句如下：

   ```shell
   obclient [(none)]> ALTER SYSTEM DELETE SERVER 'svr_ip:svr_port' [,'svr_ip:svr_port'...] [ZONE [=] 'zone_name']

   ```

   相关参数说明如下：

      - `svr_ip`：表示待删除的节点的 IP。
      - `svr_port`：表示待删除的节点的 RPC 端口。
      - `zone_name`：待删除的节点所属的 Zone。如果需要删除多个节点，多个节点要求必须在同一 Zone 内。

   删除 `zone1` 中的一台 OBServer 服务器，示例如下：

   ```shell
   obclient [(none)]> ALTER SYSTEM DELETE SERVER "172.xx.xx.xx:2882" zone='zone1'

   ```
 4. 待所有操作结束后，查询 `oceanbase.DBA_OB_SERVERS` 视图，确认节点是否删除成功。

   ```shell
   obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_SERVERS;

   ```

   如果列表中已经查询不到该节点，则表示删除成功。如果列表中仍然有该节点，且该节点的状态为 `DELETING`，则表示该节点仍然在删除状态中。

   对于未手动迁移 Unit 而是直接执行 Delete Server 操作的场景，可能会导致节点删除失败，确认节点删除失败后，可以参考 [后续操作](#后续操作) 进行处理。

## 后续操作

对于未手动迁移 Unit 而是直接执行 Delete Server 操作的场景，由于 Unit 均衡过程中可能会发生资源不足，即同 Zone 中其他节点的剩余资源不足以容纳待删除节点上的 Unit，将会导致 Unit 迁移失败，从而使该节点持续在删除状态中。您可以通过 Root Service 机器上的 `/home/admin/oceanbase/log/rootservice.log` 查看 Unit 是否迁移失败。如果确认是 Unit 迁移失败，则需要执行 Cancel Delete Server 操作，然后向 Zone 内添加节点对集群扩容后再重新删除节点。向 Zone 内添加节点的相关操作请参见 [添加节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639946)。

Cancel Delete Server 的具体操作如下：

   ```
 2. 执行以下语句，取消删除节点。

   语句如下：

   ```shell
   obclient [(none)]> ALTER SYSTEM CANCEL DELETE SERVER 'svr_ip:svr_port' [,'svr_ip:svr_port'...] [ZONE [=] 'zone_name']

   ```

   相关参数说明如下：

      - `svr_ip`：表示待取消删除的节点的 IP。
      - `svr_port`：表示待取消删除的节点的 RPC 端口，默认为 2882。
      - `zone_name`：待取消删除的节点所属的 Zone。

   示例如下：

   ```shell
   obclient [(none)]> ALTER SYSTEM CANCEL DELETE SERVER '172.xx.xx.xx:2882' zone='zone1';

   ```
 3. 查询 `oceanbase.DBA_OB_SERVERS` 视图，确认节点是否取消删除成功。

   ```

   如果待取消删除的 OBServer 的状态从 `DELETING` 变为 `ACTIVE`，则表示取消删除成功。

## 相关文档

更多节点相关的运维操作，请参见以下信息：

- [查看节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639940)
 - [重启节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639943)
 - [添加节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639946)
 - [隔离节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639934)
 - [替换节点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639938)
 - [删除 Zone](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639944)
 - [Unit 迁移](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640369)

 上一篇 下一篇 ![有帮助](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) 咨询热线
