oceanbase主备切换机制

主备切换机制是什么?自动的实现主备切换?是下面的哪种方式?

  1. lease机制:主节点申请继续租约,从而控制备节点。当主节点dump,或者主节点与大量备节点(超过半数)网络断开…,备节点是不是开始选主,然后通知所有节点新的主节点?
  2. 集群的控制机,一直监控整个集群,当主节点dump,或者存在网络问题,通知所有节点开始选主?

@论坛小助手

根据文档库中的信息,OceanBase 的主备切换机制主要涉及两种操作:SwitchoverFailover。以下是关于 OceanBase 主备切换机制的详细说明:


1. 主备切换机制概述

OceanBase 数据库的主备切换机制基于租户级别的主备架构(从 V4.1.0 版本开始)。主备关系存在于租户级别,而不是集群级别。主租户和备租户之间通过 Redo 日志进行异步同步。

  • Switchover

    • 定义:计划内的主备角色切换操作。
    • 特点
      • 主租户与对应的备租户交换角色。
      • 数据不丢失(RPO = 0)。
      • 切换时间一般为秒级。
    • 触发条件:用户主动发起 Switchover 操作。
  • Failover

    • 定义:当主租户出现无法恢复的故障时,执行的主备切换操作。
    • 特点
      • 备租户角色变为主租户。
      • 如果主租户故障前一直正常同步,则 Failover 后可能会产生百毫秒级别的数据损失。
      • 切换时间一般为秒级。
    • 触发条件:主租户发生不可恢复的故障。

参考文档:租户角色概述


2. 是否自动实现主备切换?

OceanBase 的主备切换机制并不完全依赖于自动化的 Lease 机制或集群控制机,而是结合了以下两种方式:

(1) Lease 机制

  • OceanBase 使用 Lease 机制来确保主节点的合法性。
  • 当主节点宕机或与超过半数的备节点网络断开时,备节点会启动选主流程(Paxos 协议的一部分),选出新的主节点。
  • 这种机制适用于多副本架构下的主备切换,但不直接用于跨集群的物理备库容灾场景。

(2) 集群监控与通知

  • OceanBase 并没有一个单独的“集群控制机”来全局监控整个集群状态。
  • 在物理备库容灾场景下,主备租户之间的切换需要用户手动触发(如 Switchover 或 Failover 操作)。
  • OceanBase 提供了工具(如 OCP、OBProxy)来帮助监控主备状态,并在必要时提醒用户进行切换操作。

3. 您的问题分析

您提到的两种方式可以分别对应如下:

(1) Lease 机制

  • 是 OceanBase 内部多副本架构中的一种机制,用于在单个集群内实现主备切换。
  • 当主节点宕机或网络分区时,备节点会通过 Paxos 协议选举新的主节点。

(2) 集群控制机

  • OceanBase 社区版并没有一个独立的“集群控制机”来全局监控和通知切换。
  • 跨集群的物理备库容灾切换(如 Switchover 或 Failover)需要用户手动触发。

4. 总结

  • Lease 机制:适用于单集群内的多副本架构,当主节点宕机或网络分区时,备节点会通过 Paxos 协议选举新的主节点。
  • 集群控制机:OceanBase 社区版没有独立的集群控制机,跨集群的物理备库切换需要用户手动触发(Switchover 或 Failover)。

如果您希望实现更自动化的主备切换,可以考虑使用 OCP 等管理工具来监控主备状态并辅助决策。

参考文档:高可用概述 → 物理备库容灾

具体信息可参考以下文档:

  1. OceanBase 集群高可用部署方案简介
  2. 创建服务
  3. OceanBase 集群运维管理之用户实操
  4. 部署生产环境
  5. 物理备库
  6. 单机在线转分布式部署
  7. OceanBase 概述
  8. 租户角色概述
  9. 高可用概述