首批通过分布式安全可靠测评,为关键业务系统打造
缩容 OceanBase 集群及租户
更新时间:2026-04-14 15:15:54
本节为您介绍如何对 OceanBase 集群及租户进行缩容。
应用场景
缩容是扩容的逆向操作。当集群中的资源有富余,或业务流量下降时,可以通过缩减租户的 Unit 规格或 Unit 数量来减少 OBServer 的资源占用,并通过删除 OBServer 来实现集群的弹性缩容。
前置条件
- 缩容 OBServer 时,集群需为 运行中 状态;缩容租户时,集群与租户需为 运行中 状态。
- 进行租户缩容前,建议进行一轮合并以便释放租户正在使用的内存,操作详情请参见 执行合并。
注意事项
删除 OBServer 节点的操作会涉及到负载均衡,被删除的 OBServer 节点上的租户 Unit 会在同一个 Zone 内进行迁移。如果想要选择 Unit 迁移的目标机器,可以在删除 OBServer 节点前手动执行 Unit 迁移,详情可参考 查看 Unit 分布。
删除 OBServer 节点会减少系统可用资源,如果同一个 Zone 内其他 OBServer 节点的剩余资源不足以容纳待删除节点上的 Unit,将会导致 Unit 迁移失败。在删除节点之前,建议先在集群资源管理页面判断剩余资源是否充足。
如果剩余 OBServer 节点无法容纳全部租户的数据副本或 Unit,删除 OBServer 节点的操作将会失败。建议先减少租户 Unit 规格或 Unit 数量,再删除 OBServer 节点。
操作步骤
缩容租户
调小租户 Unit 规格。
进入待缩容租户的 概览 页面。
在 副本详情 区域,单击操作列的 编辑,调小 Unit 规格。
若 Unit 下拉列表中没有所需的 Unit 规格,可单击 添加规格,新增一个规格并使用。

说明
建议租户中各个 Unit 的规格保持一致,即将 Unit 规格统一调小到相同大小。
减少租户 Unit 数量。
进入待缩容租户的 概览 页面。
在 副本详情 区域,单击 修改 Unit,减少 Unit 数量。

说明
- 建议租户中的 Unit 数量保持一致,即将 Unit 数量统一减少到相同大小。
- 当租户所属集群为 V4.0 或 V4.1 版本时,若需要减少 Unit 数量,需先将集群升级到 V4.2 及以上版本。
缩容集群
缩容租户后,集群内 OBServer 节点的资源有富余,此时可执行删除 OBServer 节点操作,对集群进行缩容。
进入待缩容集群的 概览 页面。
选择需要删除的 OBServer 节点,单击 批量删除,生成任务。
一般情况下,在缩容 OBServer 节点时,需要在每个 Zone 中删除相同数量的 OBServer 节点,以保证 Zone 之间的资源均等。如 2-2-2 的集群,在每个 Zone 中删除一台 OBServer 节点,缩容后变为 1-1-1。

等待删除 OBServer 节点的任务完成。
任务完成后,可以在集群 概览 页面查看部署模式,并关注集群中 OBServer 节点数量是否减少。
OBServer 节点数量减少后,租户资源与数据会在 OBServer 节点之间自动均衡,可以在集群 资源管理 页面中 查看 Unit 分布。
常见问题
Q:缩容租户任务一直处于进行中? A:缩容租户可能涉及到副本的迁移,耗时可能较长,建议耐心等待。同时,您可以参考如下命令手动查询 OceanBase 相关视图观察任务状态:
-- 查询租户缩容任务,JOB_STATUS 为 INPROGRESS 表示任务正在进行中
SELECT TENANT_ID, JOB_ID, JOB_TYPE, JOB_STATUS, PROGRESS
FROM oceanbase.DBA_OB_TENANT_JOBS
WHERE JOB_TYPE = 'SHRINK_RESOURCE_POOL_UNIT_NUM'
ORDER BY JOB_ID DESC;
Q:Delete observer 任务失败? A:一般是因为剩余 OBServer 节点无法满足多数派的要求,请检查租户副本。
Q:Delete observer 进度较慢? A:Delete server 时需要迁移 Unit,可能由于迁移复制较慢导致长时间未完成,可以适当修改迁移复制相关并发参数:
alter system set data_copy_concurrency = 100;
alter system set server_data_copy_out_concurrency = 40;
alter system set server_data_copy_in_concurrency = 40;
参数说明可参考:data_copy_concurrency、server_data_copy_out_concurrency、server_data_copy_in_concurrency。
注意
任务成功后请立即将参数值恢复为原始配置,防止影响集群功能。
Q:Wait observer delete 任务一直在执行中? A:如果 OBServer 节点曾经异常宕机,在 delete server 之后,还需要等待永久下线时间(默认 1 小时)之后 OBServer 才可以删除成功。Wait observer delete 任务会超时失败。解决方法是手动调小集群永久下线时间:
alter system set server_permanent_offline_time = '120s';
参数说明可参考:server_permanent_offline_time。
注意
任务成功后请立即将永久下线时间的参数值恢复为原始配置,防止影响集群功能。