ITPub博客

首页 > 数据库 > 国内数据库 > 【手摸手玩转 OceanBase 71】如何移除集群中的节点?

【手摸手玩转 OceanBase 71】如何移除集群中的节点?

原创 国内数据库 作者:13579NB232 时间:2023-01-19 15:21:00 0 删除 编辑

您可以通过删除 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';


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026124/viewspace-2932774/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-01-18

  • 博文量
    184
  • 访问量
    93228