OceanBase双节点部署,要求每个节点都可读写,支持单个节点宕机后,另一个节点依旧能提供服务,宕机节点恢复后数据要能同步

【 使用环境 】生产环境和测试环境
【 OB or 其他组件 】
【 使用版本 】4.0以上
【问题描述】两台虚拟机上OceanBase双节点部署,因为没有额外的机器来支持第三副本或者仲裁服务,要求每个节点都支持读写,支持单个节点宕机后,另一个节点依旧能提供服务,宕机节点恢复后数据要能同步,有好的解决办法吗?
已经试过一下3种:
1.双节点部署,因为是两个副本无法实现Paxos选举,当一台宕机后,另一台无法提供服务;
2.双节点部署,在其中一台中引入仲裁服务,但只允许非仲裁服务所在机器宕机后,服务能正常使用,如果是仲裁服务所在机器宕机,服务无法使用;
2.用使用异步复制的话只能一台读写,一台只读;

1 个赞

仲裁服务应该是企业版的功能吧 你部署的是企业版么?

2 个赞

不好意思,忘记了,部署的是社区版 :flushed:

2 个赞

1、1-1的节点确实是一个点宕机 就没有办法提供服务了
2、企业版相关问题 没有办法回答你
3、根据你设置的primary zone有关系 1-1-1的架构 一主副本两从副本 主副本提供读写 从副本可以提供弱读 可以这么理解 你可以看看官方文档

2 个赞

@论坛小助手

2 个赞

根据您的描述,您希望在 OceanBase 社区版中实现双节点部署,并且每个节点都支持读写,同时在单个节点宕机后另一个节点仍能提供服务,宕机节点恢复后数据能够同步。以下是对您问题的详细分析和解答:


问题分析

  1. Paxos 协议的要求
    OceanBase 数据库基于 Paxos 协议实现高可用选举和日志同步协议。Paxos 协议要求多数派节点达成一致才能提交事务。在双节点部署的情况下(即只有两个副本),无法满足 Paxos 协议的多数派要求(至少需要 3 个节点中的 2 个达成一致)。因此,当一个节点宕机时,剩下的节点无法形成多数派,整个系统将无法继续提供服务。

  2. 仲裁服务的限制
    您提到尝试引入仲裁服务,但社区版并不支持仲裁服务功能(这是企业版的功能)。因此,在社区版中无法通过仲裁服务解决双节点部署的问题。

  3. 异步复制的局限性
    异步复制虽然可以减少对网络延迟的依赖,但它会导致主从节点之间的数据不一致(RPO ≠ 0),并且从节点只能提供只读服务,无法满足您的需求。


解决方案

在 OceanBase 社区版中,要实现双节点部署并满足您的需求,目前没有直接的官方支持方案。但您可以考虑以下几种变通方法:

方法 1:三节点部署(推荐)

  • 背景:Paxos 协议需要至少 3 个节点才能保证高可用。即使其中一个节点宕机,剩下的两个节点仍然可以形成多数派,继续提供服务。
  • 架构建议
    • 使用两台物理机器作为主要节点。
    • 在第三台机器上部署一个轻量级的只读副本(Follower 副本),仅用于参与 Paxos 协议投票,不承担实际业务负载。
  • 优点
    • 满足 Paxos 协议的多数派要求。
    • 单节点宕机时,系统仍能正常运行。
    • 宕机节点恢复后,数据会自动同步。
  • 参考文档

方法 2:使用多地域多节点部署

  • 如果您无法增加第三台物理机器,可以考虑在同一个地域内使用虚拟机或容器技术模拟第三个节点。
  • 注意事项
    • 确保虚拟机或容器的性能足够稳定,避免因资源争用导致节点不可用。
    • 配置合理的 server_permanent_offline_time 参数,避免节点短暂不可用时被误判为永久下线。

方法 3:降级为单主单从架构

  • 架构说明
    • 主节点提供读写服务。
    • 从节点提供弱一致性读服务,并在主节点宕机时接管服务(需手动切换)。
  • 缺点
    • 主节点宕机时需要人工干预。
    • 数据一致性依赖于异步复制,可能存在数据丢失风险(RPO ≠ 0)。
  • 适用场景
    • 测试环境可以接受一定的数据丢失风险。

总结

在 OceanBase 社区版中,双节点部署无法完全满足您的需求,因为 Paxos 协议需要至少 3 个节点才能保证高可用。推荐您采用三节点部署方案,其中第三节点可以是一个轻量级的只读副本。如果无法增加第三台物理机器,可以考虑使用虚拟机或容器技术模拟第三个节点。

如果您对以上方案仍有疑问,或者需要更详细的配置指导,请参考以下文档:

如需进一步帮助,请联系 OceanBase 的人工答疑团队。

更多信息请查看:

  1. 通过 OMS 进行数据迁移和同步
  2. Paxos 协议
  3. 数据库层高可用
  4. 日志流和副本概述
  5. 多副本一致性协议
  6. 重启节点
  7. 高可用 FAQ
  8. 节点宕机
1 个赞

好的,是不是就是说如果不加第三个节点是无法实现这个需求的

1 个赞

确实是的

1 个赞

好的,谢谢您,还想过修改Oceanbase的Paxos副本数量为2,或者说不知道能不能关闭Paxos协议,如果关闭后好像会有“脑裂”的问题。这样可行吗

1 个赞

厉害了!!!!大佬! :facepunch: :facepunch: :facepunch: :facepunch:

不可以关闭