首批通过分布式安全可靠测评,为关键业务系统打造
alter tenant xxx resource_pool_list = (xxx) 新增租户的 resource_pool_list 报错 Resource Pool unit num is bigger than zone server count
更新时间:2026-06-10 01:56
问题现象
在 OceanBase 数据库 1-1-1 架构环境中,当某个 Zone 内的 OBServer 发生宕机且无法恢复时,尝试通过增加新的 Zone 来替换故障 Zone 的过程中,在修改租户的 Resource Pool 时遇到错误 “Resource Pool unit num is bigger than zone server count”。此错误阻止了进一步的运维操作,即无法成功添加新的 Zone。
关键信息
错误信息: “Resource Pool unit num is bigger than zone server count”。
触发条件: 租户下的任何 Zone 中,Unit 的数量大于存活的服务器数量。
触发概率: 有一定概率发生。
问题原因
该问题是由于 OceanBase 内核存在一个 BUG,导致在修改 Resource Pool 以给租户添加新 Zone 时,系统会遍历所有 Zone 检查每个 Zone 的存活服务器数量是否大于等于 Unit 数量。这种检查机制不合理地限制了跨 Zone 的资源池修改操作,即使目标 Zone 满足条件也会因为其他 Zone 不满足条件而失败。
问题的风险及影响
无法修改 resource_pool_list,这可能出现容灾问题需要容灾操作时阻碍了系统的扩展性和容错能力提升。
适用版本
OceanBase 数据库 V4.2.x 版本。
解决方法
在故障 Zone 上添加一台新的机器,确保该 Zone 的存活服务器数量大于等于 Unit 数量。
将故障 Zone 从集群中移除(减少 Locality,Resource Pool,Zone)。
规避方式
遇到 Zone 内 OBServer 宕机的情况,优先考虑在该 Zone 内部署新的 OBServer 实例,以恢复 Zone 的正常运行状态,现在不太适合先添加 Zone 后下 Zone。
若决定进行 Zone 级别的替换,建议先评估并调整现有 Zone 的 Resource Pool 配置,确保所有 Zone 的存活服务器数量均大于等于 Unit 数量后再执行替换操作。