您可以通过删除 OBServer 的方式来移除集群中的节点。
通过 SQL 语句删除 OBServer
Delete Server 操作
您可以通过 Delete Server 操作来删除 OBServer。Delete Server 操作用于从集群中删除节点。
删除 OBServer 的 SQL 语句如下:
ALTER SYSTEM DELETE SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']
该语句仅支持在 sys 租户中执行。
Delete Server 操作会涉及到负载均衡,被删除的 Server 上的资源单元会在同一个 Zone 中进行资源单元(Unit)迁移。Unit 的迁移动作是 Unit 自动均衡的过程,主要由 RootService 控制。待 Unit 迁移成功,Delete Server 操作即执行成功。
但是 Unit 均衡过程中可能会发生资源不足,即其他同 Zone 的机器资源不足以容纳这个新迁移的 Unit,这样将导致 Unit 迁移失败,从而使该 OBServer 一直持续在删除操作中。您可以通过 /home/admin/oceanbase/log/rootservice.log 查看 Unit 是否迁移失败,迁移 Unit 失败的错误代码为 -4624。如果确认是 Unit 迁移失败,则需要执行 Cancel Delete Server 操作后,然后通过向 Zone 内添加 OBServer 节点的方式对集群扩容后再删除该 OBServer。通过向 Zone 内添加 OBServer 节点进行集群扩容的相关操作请参见 向 Zone 内添加 OBServer 节点。
示例:
使用
root用户登录到数据库的sys租户。执行以下语句,删除 OBServer。
示例如下:
obclient> ALTER SYSTEM DELETE SERVER "192.168.100.1:2882" zone='z1'查看
oceanbase.DBA_OB_SERVERS视图,确认列表中已经查询不到该 OBServer 则表示删除成功。obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS;
Cancel Delete Server 操作
如果您希望取消 Delete Server 操作,可以通过 Cancel Delete Server 操作来实现。
Cancel Delete Server 操作的 SQL 语句如下:
obclient> ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']
该语句仅支持在 sys 租户中执行。
示例:
使用
root用户登录到数据库的sys租户。执行以下语句,取消删除 OBServer。
示例如下:
obclient> ALTER SYSTEM CANCEL DELETE SERVER '10.10.10.1:2882' zone='zone1';




