当 OBServer 发生故障时,您可以隔离故障 OBServer。隔离后,新的读写请求不会路由到该故障的 OBServer 上。 当 OBServer 故障后,您可以通过隔离操作将故障 OBServer 上的 Leader 切换到其他 OBServer 上,以此尝试恢复用户的写服务和日志同步。待集群恢复正常后,再尝试通过 STOP SERVER 命令停止 OBServer 的服务后,重启该故障的 OBServer 来解决问题。
隔离故障 OBServer 的 SQL 语句如下:
ALTER SYSTEM ISOLATE SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']
该语句仅支持在 sys 租户中执行。
示例:
使用
root用户登录数据库的sys租户。执行以下命令,隔离故障的机器。
示例如下:
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 setoceanbase.DBA_OB_SERVERS视图中各字段的详细说明,请参见 DBA_OB_SERVERS。
隔离故障的 OBServer 后,如果需要解除隔离状态,您可以通过执行 ALTER SYSTEM START SERVER '10.10.10.10:2882' 命令来完成。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




