首批通过分布式安全可靠测评,为关键业务系统打造
缩减 OceanBase 集群及租户的高可用
更新时间:2026-04-14 15:11:01
本节为您介绍如何通过 OCP 缩减 OceanBase 集群及租户的高可用能力。
应用场景
缩减租户副本,减小集群规模,例如 3 地 5 中心 部署模式缩容为 2 地 3 中心 部署模式。
业务迁移机房,需要先添加新 Zone,再删除旧 Zone。
前提条件
- 删除租户副本前,OceanBase 集群、租户必须为 运行中 状态。
- 删除租户副本前,必须保证租户剩余副本满足多数派,即 F/L 副本的数量大于删除前 F/L 副本总数的一半。
- OceanBase 集群删除 Zone 前,集群必须处于 运行中 状态。
- 删除 Zone 前,需要保证 Zone 上已无租户副本。
注意事项
- 仲裁服务要求租户必须为 2F/4F 模式,如果租户开启了仲裁服务,此时只能从 4F 缩减为 2F。
- 建议在删除副本前主动将主副本切走(即修改租户的 Primary Zone),确保副本删除时不影响业务。
操作步骤
操作详情请参见 删除 Zone、删除 Zone 中的租户副本。
删除租户副本是异步任务,触发任务后由 RS 后台调度逐步完成,如果数据量较大,数据删除需要较长时间。建议参考如下命令定期检查数据删除状态:
# 检查 RS 历史任务记录,出现 tenant_balance_finished 说明数据删除已完成
# OceanBase V3.x 版本
select * from __all_rootservice_event_history order by gmt_create desc limit 10;
# OceanBase V4.x 版本
select * from DBA_OB_ROOTSERVICE_EVENT_HISTORY order by timestamp desc limit 10;
# 检查 server 状态,start 要晚于 offline 时间,状态为 active
# OceanBase V3.x 版本
select svr_ip, gmt_modified, zone, usec_to_time(start_service_time), usec_to_time(last_offline_time), status from __all_server;
# OceanBase V4.x 版本
SELECT svr_ip, zone, UNIX_TIMESTAMP(NVL(`start_service_time`, 0))*1000000 as start_service_time, status from DBA_OB_SERVERS;
# 检查数据副本是否补齐,<副本数>替换为预期副本数,返回为空说明已补齐
# OceanBase V3.x 版本
select /*+read_consistency(weak)*/ count(*)c from gv$partition group by table_id, partition_id having c != <副本数>;
# OceanBase V4.x 版本没有分区副本的概念,以下 SQL 检查日志流是否均有主,均有主则返回 0,表示正常
SELECT COUNT(1) FROM CDB_OB_LS A LEFT JOIN GV$OB_LOG_STAT B ON A.LS_ID = B.LS_ID AND A.TENANT_ID = B.TENANT_ID AND B.ROLE='LEADER' WHERE B.LS_ID IS NULL AND A.STATUS NOT IN ('CREATING', 'CREATED', 'TENANT_DROPPING', 'CREATE_ABORT', 'PRE_TENANT_DROPPING');
# 检查日志是否同步,返回为空说明已同步
# OceanBase V3.x 版本
select svr_ip, svr_port, table_id, partition_idx from __all_virtual_clog_stat where is_in_sync= 0 and is_offline = 0 and replica_type != 16;
# OceanBase V4.x 版本检查日志是否同步,返回为空说明已同步
select count(1) as unsync_cnt from GV$OB_LOG_STAT where in_sync = 'NO';
您可在 OCP 资源管理界面查看租户副本分布,详情请参见 查看 Unit 分布。

常见问题
Q1: 删除 Zone 时报错 “指定的 Zone=x 上存在 Unit,不允许删除”。
A:OCP 要求删除 Zone 前,必须先删除 Zone 上的所有租户副本。您可在资源管理界面查看 Zone 上的副本分布,删除所有副本后再删除 Zone。
Q2: 删除租户副本时报错 “violate locality principal not allowed”。
A:报该错误表示删除副本后,租户的 (F/L) 副本数不满足多数派,禁止删除。可在资源管理界面查看租户的副本分布,保证租户副本满足多数派。