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

【玩转OceanBase笔记44】如何隔离故障的 OBServer?

218

当 OBServer 发生故障时,您可以隔离故障 OBServer。隔离后,新的读写请求不会路由到该故障的 OBServer 上。 当 OBServer 故障后,您可以通过隔离操作将故障 OBServer 上的 Leader 切换到其他 OBServer 上,以此尝试恢复用户的写服务和日志同步。待集群恢复正常后,再尝试通过 STOP SERVER 命令停止 OBServer 的服务后,重启该故障的 OBServer 来解决问题。

隔离故障 OBServer 的 SQL 语句如下:

ALTER SYSTEM ISOLATE SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']

该语句仅支持在 sys 租户中执行。

示例:

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

  2. 执行以下命令,隔离故障的机器。

    示例如下:

    obclient> ALTER SYSTEM ISOLATE SERVER '10.10.10.10:2882' ZONE='zone1';
    

    SQL 语句执行成功,则表示隔离故障 OBServer 的操作执行成功。同时,可以看到 oceanbase.DBA_OB_SERVERS 视图中 status 字段仍然为 active,但是该 OBServer 对应的 stop_time 字段不为 NULL,表示该 OBServer 处于stop 状态,且此时 stop_time 对应的值为该 OBServer 被执行故障隔离的时间戳。

    查看 oceanbase.DBA_OB_SERVERS 视图的示例如下:

    obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS\G
     *************************** 1. row ***************************
                   SVR_IP: xx.xx.xx.xx
                 SVR_PORT: 2882
                       ID: 1
                     ZONE: zone1
                 SQL_PORT: 2881
           WITH_ROOTSERVER: YES
                   STATUS: ACTIVE
       START_SERVICE_TIME: 2022-06-17 11:30:04.589074
                 STOP_TIME: NULL
     BLOCK_MIGRATE_IN_TIME: NULL
         LAST_OFFLINE_TIME: NULL
             BUILD_VERSION: 4.0.0.0_20220525115829-1873fc2598d56060fe307ce3b7b88647686e0b09(May 25 2022 12:12:10)
     1 row in set
    

    oceanbase.DBA_OB_SERVERS 视图中各字段的详细说明,请参见 DBA_OB_SERVERS

隔离故障的 OBServer 后,如果需要解除隔离状态,您可以通过执行 ALTER SYSTEM START SERVER '10.10.10.10:2882' 命令来完成。

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

评论