首批通过分布式安全可靠测评,为关键业务系统打造
OCP 删除 OBServer 一直在执行中状态
更新时间:2026-07-08 08:01
适用版本
OceanBase 数据库所有版本。
问题现象
使用 OCP 删除 OBServer 或替换 OBServer 时,Wait observer delete 步骤一直在执行中状态。
问题原因
Delete OBServer 操作会涉及到负载均衡,被删除的 Server 上的资源单元会在同一个 Zone 中进行资源单元(Unit)迁移,待 Unit 迁移成功,Delete Server 操作即执行成功。
通常,有两种情况会导致删除 OBServer 无法成功,导致被删除 OBServer 一直持续在 DELETING 状态:
对在线的 OBServer 执行删除操作,同 Zone 的机器资源不足以容纳被删除 OBServer 上的 Unit,导致 Unit 迁移失败,从而使该 OBServer 一直持续在删除操作中。
对离线的 OBServer 执行删除操作,OBServer 的离线时间小于永久下线时间,因为无法对离线的 OBServer 上的 Unit 执行迁移操作,导致删除失败。
解决方式
根据问题原因的不同,采取不同的应对手段:
因为资源不足导致 OBServer 上的 Unit 迁移失败,可以先执行 Cancel Delete Server 操作,再向 Zone 内添加新的 OBServer 节点对集群扩容,然后再删除该 OBServer。
- 可以通过
/home/admin/oceanbase/log/rootservice.log查看 Unit 是否迁移失败,迁移 Unit 失败的错误代码为 -4624。 - 或者通过系统表
__all_rootservice_event_history查看与 unit 迁移相关的任务是否失败。
- 可以通过
因为 OBServer 宕机或者故障而导致的 Unit 迁移失败,可以先把
server_permanent_offline_time参数的值调整成 10s,等待 OBServer 永久下线后删除操作自然会成功。obclient> alter system set server_permanent_offline_time='10s';注意
删除操作完成后,需要将
server_permanent_offline_time设置回原来的值。