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余套系统国产数据库升级

oceanbaseVIVO

替换 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.2.3
  5. 管理数据库
  6. 集群管理
  7. 集群常见操作
  8. 隔离 Zone
分布式版-V4.2.3
  • What's New
  • 简介
  • 快速上手
  • 应用开发
  • 部署数据库
  • 数据迁移
  • 管理数据库
    • 登录 OceanBase 租户
    • 集群管理
      • 集群介绍
      • 集群配置项
      • 集群常见操作
        • 查看 Zone
        • 查看节点
        • 重启节点
        • 添加节点
        • 删除节点
        • 隔离节点
        • 替换节点
        • 启动 Zone
        • 添加 Zone
        • 删除 Zone
        • 修改 Zone
        • 隔离 Zone
        • 查看集群配置项
        • 修改集群配置项
        • 集群升级
      • 集群常见故障处理
    • 租户管理
    • 副本管理
    • 高可用
    • 安全权限
    • 备份恢复
    • 监控指标
    • 日志
    • 性能调优
    • 日常巡检
    • 问题排查
    • 应急处理
  • 参考指南
  • 常见问题
  • 版本发布记录
  • 术语
  1. 文档中心
  2. OceanBase 数据库
  3. 分布式版
  4. V4.2.3
  5. 管理数据库
  6. 集群管理
  7. 集群常见操作
  8. 隔离 Zone

隔离 Zone

更新时间:2024-04-24 14:53:01

github-fill编辑
编组分享

为了实现 OceanBase 数据库的高级别容灾功能,我们引入了 Zone 的概念。Zone 是一个逻辑概念,一般是具有相似容灾属性的一组节点的组合。从物理层面来讲,一个 Zone 通常是一个独立的物理部署单元,可以是一个数据中心(IDC)或者云上的一个可用区,也可以是一个单独的机架(Rack)。通过将 OceanBase 集群部署于多个 Zone (通常至少 3 个 Zone),实现单个 Zone 故障时的故障隔离及快速恢复。

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

  • 故障隔离场景:例如多机房部署架构下,某机房内有交换机异常,此时部分节点出现丢包、重传,甚至无主选举。为了快速恢复,可以直接隔离该机房对应的 Zone。

  • 运维变更场景:例如 OceanBase 集群升级时采用的轮转升级方案,首先隔离一个 Zone,将用户流量从该 Zone 切到其他 Zone,然后执行升级动作。该 Zone 升级完成后执行 Start 操作恢复流量,再依次升级其他 Zone,从而做到升级对用户透明。

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

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

  • 通过 STOP ZONE 命令隔离 Zone

  • 通过 FORCE STOP ZONE 命令隔离 Zone

  • 通过 ISOLATE ZONE 命令隔离 Zone

通过以上命令成功隔离 Zone 后,Zone 的 STATUS 的值变为 INACTIVE,表示该 Zone 处于隔离状态。

STOP ZONE

命令格式如下:

obclient [(none)]> ALTER SYSTEM STOP ZONE 'zone_name';

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

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

STOP ZONE 命令限制如下:

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

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

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

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

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

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

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

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

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

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

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

FORCE STOP ZONE

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

FORCE STOP ZONE 的典型应用场景:某机房内的服务器或者网络设备出现硬件异常需要停机运维,为了保证隔离后能够安全的停止进程,我们首选 STOP ZONE 命令隔离机房对应的 Zone,但其他 Zone 内的节点的副本日志存在较大延迟,STOP ZONE 命令无法执行成功。我们只能退而其次选择 FORCE STOP ZONE 命令来隔离 Zone,首先避免硬件异常对业务流量造成影响。然后排查副本日志延迟的原因,待副本日志实时后再次尝试执行 STOP ZONE 命令,成功执行后可以安全的进行停机运维。

obclient [(none)]> ALTER SYSTEM FORCE STOP ZONE zone_name;

注意事项:

  1. 如果在 FORCE STOP ZONE 之后,目标 Zone 节点仍然继续参与 Paxos 日志同步,明确不会下线目标 Zone 节点,那么可以安全的使用 FORCE STOP ZONE,实现隔离故障以及切换业务流量目的。即使存在部分副本日志不同步,也不会影响服务的连续性。

  2. 如果用户希望在 FORCE STOP ZONE 之后下线目标节点,那么用户需要关注存在落后副本的日志流情况,确认目标节点下线后,是否影响该日志流提供服务,用户还可以通过查询 GV$OB_LOG_STAT 视图评估服务影响时间。

警告

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

ISOLATE ZONE

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

obclient [(none)]> ALTER SYSTEM ISOLATE ZONE zone_name;

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

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

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

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

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

ISOLATE ZONE 命令限制如下:

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

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

警告

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

总结

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

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

相关文档

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

  • 查看 Zone

  • 添加 Zone

  • 删除 Zone

  • 修改 Zone

  • 隔离节点

本文目录

STOP ZONEFORCE STOP ZONEISOLATE ZONE总结相关文档
有帮助
无帮助
反馈
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 基础资源和备案服务由阿里云提供