您可以通过删除 OBServer 的方式来移除集群中的节点。
您可以通过 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;
如果您希望取消 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';
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026124/viewspace-2932774/ ,如需转载,请注明出处,否则将追究法律责任。