OceanBase
  • 产品
  • 解决方案
  • 客户
  • 合作伙伴
  • 资源与服务
  • 文档
  • 社区
云控制台登录 / 注册
  • 免费试用
本地部署
OceanBase 分布式数据库

首批通过分布式安全可靠测评,为关键业务系统打造

OceanBase 集中式数据库

集中式架构,兼具性能与成本优势的集中式数据库

OceanBase 社区版

兼容 MySQL 的单机分布式一体化开源数据库

OceanBase seekdb

为现代 AI 应用打造的开源混合搜索数据库

云上部署
OB Cloud

一体化云数据库,打造面向多云的一致性体验

一体机
OceanBase 数据库一体机

软硬一体,提供极致性能与高可靠性保障

OceanBase AI 一体机

基于 OceanBase AI Stack 的智能一体机

工具
迁移评估工具(OMA)
数据迁移工具(OMS)
开发者工具(ODC)
运维管理工具(OCP)
自治服务工具(OAS)
一体化关键能力
TP 事务处理

面向关键业务负载的事务处理能力,保障大规模业务稳定运行与数据零丢失

AP 实时分析

原生支持事务与分析融合,低延迟洞察业务数据,驱动智能决策与敏捷运营

AI 现代负载

湖库一体管理多模态数据离在线处理,AI 原生支撑 Agent 规模化应用

oceanbase白皮书

OceanBase 一体化分布式数据库

通用场景
全场景业务系统 OLTP
实时分析混合负载
异地多活
多基础设施部署
一站式传统数据库升级
混合云部署
一库多芯软硬件混合部署
分布式数据库单机部署
大存储类数据库降本
冷数据归档降本
多实例资源整合
分库分表一体化升级
高并发场景
数据中台
行业解决方案
国有大行和股份制银行核心系统解决方案
区域性银行核心系统解决方案
寿险核心系统解决方案
产险核心系统解决方案
资管交易类系统解决方案
资管 TA 清算类系统解决方案
运营商核心系统解决方案
人社核心系统解决方案
电力核心系统解决方案
行业专区
银行专区

助力银行完成各类核心业务系统升级

保险专区

寿险、产险核心系统升级的更佳选择

零售专区

助力200+零售行业客户规模化落地

DB 大咖说
oceanbase爱奇艺

百亿级卡券业务的“单库双擎”架构升级

oceanbase四川银行

800个测试用例选定分布式数据库

oceanbase太平洋保险

先难后易,核心系统数据库升级复盘

行业案例
oceanbase交通银行

核心数据库的“分布式革命”

oceanbase中国移动

B域核心CRM&BOSS近乎零改造分布式升级

oceanbase理想

打造领先的智能制造系统和自动驾驶体验

演讲实录
oceanbase中国联通

集团应用分布式数据库覆盖B/O/M域

oceanbase国泰海通

智能推送系统稳定支撑单日亿级消息处理量

oceanbase中国联合航空

中国首款机票盲盒背后的数据库力量

用户实践
oceanbase北京银行

最快速度完成40余套系统国产数据库升级

oceanbase维沃移动通信有限公司

替换 MySQL 分库分表,探索成本效益最优

oceanbase滴滴

数据库大规模运维体系建设及落地实践

合作伙伴
合作伙伴类型
联合解决方案
产业生态伙伴
经销商伙伴
技术服务伙伴
培训认证伙伴
生态联合解决方案
神州信息 x OceanBase 银行核心系统
长亮科技 x OceanBase 新核心系统
中电金信 x OceanBase 金融分布式核心系统
天阳科技 x OceanBase 贷记卡方案
易诚互动 x OceanBase 手机银行方案
恒生 x OceanBase UF3.0/O45/TA/估值方案
商业发行版
云树®数据库软件 ActionDB
服务
支持与服务
提交工单
软件下载
OceanBase 企业版
OceanBase 社区版
OB Cloud
学习
培训与认证
在线课堂
在线体验
开发者
开发者中心
资料
行业报告与白皮书
官方博客
年度发布会资料
开发者大会资料
oceanbase白皮书

金融核心系统数据库升级路径与场景实践

oceanbase白皮书

人社关键业务数据库一体化升级实践

产品文档
oceanbaseOceanBase 数据库
驱动和中间件
oceanbaseOB Cloud 云数据库
工具与组件
oceanbaseOceanBase 数据库一体机
生态商业产品
快速上手
OceanBase 数据库
OB Cloud 云数据库
知识库
汇聚常见产品使用问题案例
在线体验

Demo与实验,感受 OceanBase 的核心能力与应用场景

OceanBase 最佳实践
了解 OceanBase 分布式数据库的架构与系统原理
技术博客

技术解析 | 用户实践 | 社区月报

在线课堂

电子书 |视频课程|在线培训

Developer Hub
应用开发Demo | 数据开发与集成工具
问答论坛

快速答疑 | 常见问题 | 技术交流

社区活动

Meetup | 技术公开课

GitHub

查看源码 | 贡献代码 | 建议反馈

加入社区

社区组织 | 社区用户贡献 |开发者贡献

进入社区首页
oceanbase数据库大赛

第五届OceanBase数据库大赛

oceanbase免费课程
从故障处理到性能调优:OceanBase资深DBA进阶培训
切换语言
  • 中文站 - 简体中文
  • International - English
  • 日本站 - 日本語
文档反馈
  1. 文档中心
  2. OceanBase 数据库
  3. 分布式版
  4. V4.3.2
  5. 管理数据库
  6. 集群管理
  7. 集群常见操作
  8. 隔离节点
分布式版-V4.3.2
  • What's New
  • 简介
  • 快速上手
  • 应用开发
  • 部署数据库
  • 数据迁移
  • 管理数据库
    • 登录 OceanBase 租户
    • 集群管理
      • 集群介绍
      • 集群配置项
      • 集群常见操作
        • 查看 Zone
        • 查看节点
        • 重启节点
        • 添加节点
        • 删除节点
        • 隔离节点
        • 替换节点
        • 启动 Zone
        • 添加 Zone
        • 删除 Zone
        • 修改 Zone
        • 隔离 Zone
        • 查看集群配置项
        • 修改集群配置项
        • 重置集群配置项
        • 集群升级
      • 集群常见故障处理
    • 租户管理
    • 副本管理
    • 高可用
    • 安全权限
    • 备份恢复
    • 监控指标
    • 日志
    • 性能调优
    • 日常巡检
    • 问题排查
    • 应急处理
  • AP
  • 生态集成
  • 参考指南
  • 常见问题
  • 版本发布记录
  • 术语
  1. 文档中心
  2. OceanBase 数据库
  3. 分布式版
  4. V4.3.2
  5. 管理数据库
  6. 集群管理
  7. 集群常见操作
  8. 隔离节点

隔离节点

更新时间:2024-09-06 23:00:00

github-fill编辑
编组分享

当节点发生异常或者需要运维变更时,可以隔离节点。隔离后,新的读写请求不会路由到该节点上,从而可以隔离故障或者无损的执行运维变更动作。

  • 故障隔离场景:节点发生异常时,需要将异常节点与业务流量隔离开来。例如,某机房内有交换机异常,此时某些节点出现丢包、重传,甚至无主选举。为了快速恢复,可以直接隔离这些异常节点。节点恢复后执行 Start 操作恢复节点流量。

  • 运维变更场景:节点需要运维变更时,需要保证对业务流量的透明无感。例如,某节点服务器需要重启时,为了保证重启过程中不影响业务流量,可以执行节点隔离动作,从而将待重启服务器上的业务流量切到其他节点。重启动作完成后执行 Start 操作恢复节点流量。

隔离节点,只是将业务流量从该节点切走,并没有改变 Paxos 投票成员的数量。不同的隔离命令有不同的安全级别保证,需要根据执行的具体的隔离命令仔细斟酌后续能够安全执行的动作。隔离命令适用于短时间隔离的场景,需要持续保持关注,提前做好二次故障的应急预案。如果短时间内恢复不了,可以采用替换节点的方式彻底去除隐患,替换节点的详细操作请参见 替换节点。

隔离节点有以下三种命令,不同的隔离命令有不同的安全级别保证:

  • 通过 STOP SERVER 命令隔离节点

  • 通过 FORCE STOP SERVER 命令隔离节点

  • 通过 ISOLATE SERVER 命令隔离节点

使用上述命令成功隔离节点后,被隔离节点的 STATUS 字段仍为 ACTIVE 不变,但 STOP_TIME 字段的值由 NULL 变为隔离操作的时间点,表示该节点处于 Stopped 状态。

STOP SERVER

命令格式如下,一次支持 Stop 多台 server。

obclient [(none)]> ALTER SYSTEM STOP SERVER 'svr_ip1:svr_port1', 'svr_ip2:svr_port2', ...;

STOP SERVER 是最安全的隔离命令。STOP SERVER 不但可以将业务流量从该节点上切走,实现该节点与业务流量隔离的效果,还能保证除被隔离节点以外的其他节点依然能够构成 Paxos 多数派,从而可以安全的对被隔离节点执行任何动作,例如 pstack、调整日志级别等,甚至停止进程。STOP SERVER 适用于需要故障隔离和停机运维的场景,是故障隔离和运维变更首选的隔离命令。

为了保证成功执行后可以安全的对被隔离节点执行任何动作,STOP SERVER 命令前置检测比较严格,通过内部各种状态检查,保证目标节点即使停止进程后,集群剩余可用节点的副本仍然能够构成 Paxos 多数派,从而不影响数据库服务的连续性。

STOP SERVER 命令限制如下:

  1. 不允许同时有多个 Zone 的节点被 Stop,如果同时 Stop 了多个 Zone 的节点,或者已经有其他 Zone 的节点被 Stop,则报错 -4660,cannot stop server or stop zone in multiple zones。如果遇到该错误信息,可以通过查询 DBA_OB_SERVERS 和 DBA_OB_ZONES 视图,确认是否存在多个 Zone 的节点被 Stop。

  2. STOP SERVER 命令通过检查所有租户的所有日志流的 Paxos 成员列表,确认除了目标节点和其他非可用节点外,剩余节点上的副本是否依然能够构成 Paxos 多数派。如果不能构成多数派,则不允许执行 Stop Server 操作。

    1. 非可用节点包括:INACTIVE、Stopped(ACTIVE 状态且 stop_time 字段大于 0)及 DELETING 状态的节点。

    2. 为了检查日志流的 Paxos 成员列表,要求所有日志流都有 Leader,如果发现日志流没有 Leader,则报错 -4179,并且展示有问题的日志流信息。

      例如:租户 1001 的 1 号日志流没有 Leader,则报错信息为 Tenant(1001) LS(1) has no leader, stop server not allowed。如果遇到该错误信息,可以通过查询 GV$OB_LOG_STAT 视图确认日志流的 Leader 副本信息,排查 Leader 副本不正常的问题。

    3. 如果租户的 Locality 属性变更命令与 STOP SERVER 命令并发执行,为了防止误判,禁止在 Locality 变更过程中 Stop 节点。

      例如:租户 1001 正在变更 Locality 减少一个副本,日志流的成员列表正在从 A、B、C 变为 A、B,此时如果需要 Stop B 节点,STOP SERVER 命令可能误判 B 节点可以被 Stop,从而与减少副本操作冲突。为了避免误判,STOP SERVER 命令会报错 -4179,并且展示正在变更的租户信息 Tenant(1001) locality is changing, stop server not allowed。如果遇到该错误信息,可以通过查询 DBA_OB_TENANTS 视图,确认是否存在租户 Locality 变更操作。

    4. 在排除了目标节点和其他非可用节点后,如果剩余节点上的副本不能满足多数派,则报错 -4179,并且展示有问题的日志流信息。

      例如:租户 1001 的 1 号日志流在 Stop 节点后不能满足多数派,则报错信息为 Tenant(1001) LS(1) has no enough valid paxos member after stop server, stop server not allowed。如果遇到该错误信息,可以通过查询 GV$OB_LOG_STAT 视图,确认日志流的成员列表和副本信息是否满足多数派。

  3. STOP SERVER 保证成功执行后,还能够对被隔离节点执行任何侵入性动作。即剩余可用节点上的副本在满足多数派的前提下,还要保证剩余可用节点中的多数派副本的日志是同步的,使得被隔离节点即使停止进程后,剩余节点的日志依然能够形成多数派。

    1. 日志同步判断条件:对比日志流的 Follower 副本和 Leader 副本的最新日志位点,日志位点差距在 5 秒以内即认为日志是同步的。可以通过查询 GV$OB_LOG_STAT 视图的 END_SCN 字段,获取指定日志流的各个副本的最新日志位点。

    2. 如果不满足该条件,则报错 -4179,并且展示有问题的日志流信息。

      例如:租户 1001 的 1 号日志流日志不同步,则报错信息为 Tenant(1001) LS(1) log not sync, stop server not allowed。如果遇到该错误信息,可以通过查询 GV$OB_LOG_STAT 视图的 END_SCN 字段确认日志流副本同步情况。

    # 获取指定日志流副本的最新日志位点信息,并转换成时间戳形式
    obclient [(none)]> SELECT SCN_TO_TIMESTAMP(END_SCN) FROM GV$OB_LOG_STAT WHERE TENANT_ID = 1001 and LS_ID = 1;
    

STOP SERVER 是最安全的隔离命令,但同时它的前置条件也是最严格的。在实际应用中,特别是故障应急场景下,可能无法完全满足上述前置条件,进而导致 STOP SERVER 命令无法执行成功。因此 OceanBase 数据库提供了另外两种节点隔离命令,FORCE STOP SERVER 和 ISOLATE SERVER。他们不同程度的放松了前置检查,减少了限制,从而在更多场景下能够成功隔离节点,但节点被隔离后的操作有所限制。任何场景下都应该首选 STOP SERVER 命令,STOP SERVER 无法成功的情况下可以选择弱化版本的节点隔离命令,但弱化版本的节点隔离后能够执行的操作会有所限制。

FORCE STOP SERVER

相比于 STOP SERVER 命令,FORCE STOP SERVER 跳过了日志同步检查。FORCE STOP SERVER 命令能够保证将业务流量从被隔离节点上切走,但不能保证被隔离节点能够安全的停止进程。强行停止进程后可能破坏 Paxos 多数派,从而影响数据库服务的连续性。

FORCE STOP SERVER 的典型应用场景:A、B、C 三个节点,B 节点的副本日志存在较大延迟,例如 1 个小时。此时节点 C 出现硬件异常需要停机运维。为了保证隔离后能够安全的停止进程,我们首选 STOP SERVER 命令隔离节点,但由于 B 节点的副本日志存在较大延迟,STOP SERVER 命令无法执行成功。我们只能退而其次选择 FORCE STOP SERVER 命令来隔离节点,首先避免硬件异常对业务流量造成影响。然后排查 B 节点日志延迟的原因,待 B 节点日志实时后再次尝试执行 STOP SERVER 命令,成功执行后可以安全的进行停机运维。

obclient [(none)]> ALTER SYSTEM FORCE STOP SERVER 'svr_ip1:svr_port1', 'svr_ip2:svr_port2', ...;

警告

FORCE STOP SERVER 仅仅适用于除了待隔离节点外存在其他节点日志延迟的场景,此时隔离节点的目的仅仅是故障隔离,不能进行任何会造成进程停止的侵入性动作。否则会破坏 Paxos 多数派,造成租户无主,影响数据库服务的连续性。

ISOLATE SERVER

相比于 STOP SERVER 和 FORCE STOP SERVER,ISOLATE SERVER 的前置检查最为宽松,响应速度最快。它不保证安全性,即不保证目标节点下线后,集群剩余节点的副本可以组成 Paxos 多数派继续提供服务。

obclient [(none)]> ALTER SYSTEM ISOLATE SERVER 'svr_ip1:svr_port1', 'svr_ip2:svr_port2', ...;

ISOLATE SERVER 命令前置检查放松逻辑如下:

  1. ISOLATE SERVER 命令不再限制多个 Zone 的节点同时隔离,如果已经有其他 Zone 的节点被隔离(执行任何一种隔离命令),也可以执行 ISOLATE SERVER 命令。

    典型场景:集群有三个 Zone(Z1、Z2、Z3),Z1 和 Z3 各自一个节点出现故障,需要隔离。Z1 故障节点隔离成功后,如果采用 STOP SERVER 或者 FORCE STOP SERVER 命令继续隔离 Z3 故障节点,会报错不允许同时隔离多个 Zone。此时仅能执行 ISOLATE SERVER 命令,将业务流量从故障节点上切走,隔离后不能进行任何会造成进程停止的侵入性动作。

  2. ISOLATE SERVER 命令不再检查日志流副本的多数派和日志同步情况,即使不满足相应条件,也可以执行 ISOLATE SERVER 命令。

    典型场景:日志流初始的 Paxos 成员列表为 A、B、C 三个节点,C 节点机器宕机后永久下线,日志流的成员列表变更为 A、B,处于缺副本状态。此时如果 B 节点发生硬件故障并希望隔离该节点,STOP SERVER 和 FORCE STOP SERVER 均会失败,报错为剩余副本不满足多数派。此时仅能执行 ISOLATE SERVER 命令,将业务流量从故障节点上切走,隔离后不能进行任何会造成进程停止的侵入性动作。

ISOLATE SERVER 命令限制如下:

当出现多个 Zone 节点被隔离时,ISOLATE SERVER 会检查所有租户的 Primary Zone 属性,要求不能同时隔离一个租户 Primary Zone 所在地域的所有 Zone 的节点,以防止租户的读写服务切到其他地域,进而业务请求跨城访问导致耗时大幅增加。

可以通过 DBA_OB_TENANTS 视图检查租户的 Primary Zone 属性,结合 DBA_OB_ZONES 和 DBA_OB_SERVERS 视图中已经隔离的 Zone 和节点的信息,确认是否打破上述限制条件。

警告

ISOLATE SERVER 仅仅适用于除了待隔离节点外存在其他节点状态异常的场景,此时隔离节点的目的仅仅是故障隔离,不能进行任何会造成进程停止的侵入性动作。否则会破坏 Paxos 多数派,造成租户无主,影响数据库服务的连续性。

总结

任何场景下都应该首选 STOP SERVER 命令,成功执行后除了达成故障隔离的目的,还可以保证能够安全的对被隔离节点执行任何应急动作和运维动作。STOP SERVER 无法成功的情况下可以选择弱化版本的节点隔离命令,但弱化版本的节点隔离后不能保证能够安全的执行侵入性动作。

FORCE STOP SERVER 适用于除了待隔离节点外存在其他节点日志延迟的场景,ISOLATE SERVER 适用于除了待隔离节点外存在其他节点状态异常的场景。此时隔离节点的目的仅仅是故障隔离,不能进行任何会造成进程停止的侵入性运维动作,否则会破坏 Paxos 多数派,造成租户无主,影响数据库服务的连续性。

相关文档

更多节点相关的运维操作,请参见以下信息:

  • 查看节点

  • 重启节点

  • 添加节点

  • 删除节点

  • 替换节点

本文目录

STOP SERVERFORCE STOP SERVERISOLATE SERVER总结相关文档
有帮助
无帮助
反馈
AI

OceanBase

OceanBase 海扬数据库始创于 2010 年,是完全自主研发的数据库公司。2020年开始独立商业化运作,历经15年大规模核心场景验证,目前是中国数据库的领军企业之一。从分布式数据库到 AI 数据库,为企业提供安全、稳定、可扩展的数据底座,推动数据基础设施全面拥抱 AI 时代。

关于我们

关于 OceanBase最新动态资质荣誉客户专家委员会招贤纳士合作伙伴年度发布会开发者大会

资源与服务

支持与服务文档知识库软件与工具下载培训与认证在线体验数据库专题视频

社区

快速上手开发者中心博客活动学习问答GitHub

数据库百科

分布式数据库国产数据库OLTP 数据库OLAP 数据库HTAP 数据库数据库向量数据库向量检索

联系我们

服务热线:
400-109-0633
商务咨询
培训认证技术支持媒体合作
京公网安备11010802047223号京公网安备11010802047223号
京ICP备20024574号-1
合字B1.B2-20250395
网站服务协议隐私协议安全响应协议
OceanBase 版权所有 © 2026 基础资源和备案服务由阿里云提供