暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【玩转OceanBase笔记43】集群中的节点如何移除?

557

您可以通过删除 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 节点

示例:

  1. 使用 root 用户登录到数据库的 sys 租户。

  2. 执行以下语句,删除 OBServer。

    示例如下:

    obclient> ALTER SYSTEM DELETE SERVER "192.168.100.1:2882" zone='z1'
    
  3. 查看 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 租户中执行。

示例:

  1. 使用 root 用户登录到数据库的 sys 租户。

  2. 执行以下语句,取消删除 OBServer。

    示例如下:

    obclient> ALTER SYSTEM CANCEL DELETE SERVER '10.10.10.1:2882' zone='zone1';


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论