【 使用环境 】生产环境和测试环境
【 OB or 其他组件 】
【 使用版本 】4.0以上
【问题描述】两台虚拟机上OceanBase双节点部署,因为没有额外的机器来支持第三副本或者仲裁服务,要求每个节点都支持读写,支持单个节点宕机后,另一个节点依旧能提供服务,宕机节点恢复后数据要能同步,有好的解决办法吗?
已经试过一下3种:
1.双节点部署,因为是两个副本无法实现Paxos选举,当一台宕机后,另一台无法提供服务;
2.双节点部署,在其中一台中引入仲裁服务,但只允许非仲裁服务所在机器宕机后,服务能正常使用,如果是仲裁服务所在机器宕机,服务无法使用;
2.用使用异步复制的话只能一台读写,一台只读;
仲裁服务应该是企业版的功能吧 你部署的是企业版么?
不好意思,忘记了,部署的是社区版
1、1-1的节点确实是一个点宕机 就没有办法提供服务了
2、企业版相关问题 没有办法回答你
3、根据你设置的primary zone有关系 1-1-1的架构 一主副本两从副本 主副本提供读写 从副本可以提供弱读 可以这么理解 你可以看看官方文档
根据您的描述,您希望在 OceanBase 社区版中实现双节点部署,并且每个节点都支持读写,同时在单个节点宕机后另一个节点仍能提供服务,宕机节点恢复后数据能够同步。以下是对您问题的详细分析和解答:
问题分析
-
Paxos 协议的要求
OceanBase 数据库基于 Paxos 协议实现高可用选举和日志同步协议。Paxos 协议要求多数派节点达成一致才能提交事务。在双节点部署的情况下(即只有两个副本),无法满足 Paxos 协议的多数派要求(至少需要 3 个节点中的 2 个达成一致)。因此,当一个节点宕机时,剩下的节点无法形成多数派,整个系统将无法继续提供服务。 -
仲裁服务的限制
您提到尝试引入仲裁服务,但社区版并不支持仲裁服务功能(这是企业版的功能)。因此,在社区版中无法通过仲裁服务解决双节点部署的问题。 -
异步复制的局限性
异步复制虽然可以减少对网络延迟的依赖,但它会导致主从节点之间的数据不一致(RPO ≠ 0),并且从节点只能提供只读服务,无法满足您的需求。
解决方案
在 OceanBase 社区版中,要实现双节点部署并满足您的需求,目前没有直接的官方支持方案。但您可以考虑以下几种变通方法:
方法 1:三节点部署(推荐)
- 背景:Paxos 协议需要至少 3 个节点才能保证高可用。即使其中一个节点宕机,剩下的两个节点仍然可以形成多数派,继续提供服务。
-
架构建议:
- 使用两台物理机器作为主要节点。
- 在第三台机器上部署一个轻量级的只读副本(Follower 副本),仅用于参与 Paxos 协议投票,不承担实际业务负载。
-
优点:
- 满足 Paxos 协议的多数派要求。
- 单节点宕机时,系统仍能正常运行。
- 宕机节点恢复后,数据会自动同步。
- 参考文档:
方法 2:使用多地域多节点部署
- 如果您无法增加第三台物理机器,可以考虑在同一个地域内使用虚拟机或容器技术模拟第三个节点。
-
注意事项:
- 确保虚拟机或容器的性能足够稳定,避免因资源争用导致节点不可用。
- 配置合理的
server_permanent_offline_time
参数,避免节点短暂不可用时被误判为永久下线。
方法 3:降级为单主单从架构
-
架构说明:
- 主节点提供读写服务。
- 从节点提供弱一致性读服务,并在主节点宕机时接管服务(需手动切换)。
-
缺点:
- 主节点宕机时需要人工干预。
- 数据一致性依赖于异步复制,可能存在数据丢失风险(RPO ≠ 0)。
-
适用场景:
- 测试环境可以接受一定的数据丢失风险。
总结
在 OceanBase 社区版中,双节点部署无法完全满足您的需求,因为 Paxos 协议需要至少 3 个节点才能保证高可用。推荐您采用三节点部署方案,其中第三节点可以是一个轻量级的只读副本。如果无法增加第三台物理机器,可以考虑使用虚拟机或容器技术模拟第三个节点。
如果您对以上方案仍有疑问,或者需要更详细的配置指导,请参考以下文档:
如需进一步帮助,请联系 OceanBase 的人工答疑团队。
更多信息请查看:
好的,是不是就是说如果不加第三个节点是无法实现这个需求的
确实是的
好的,谢谢您,还想过修改Oceanbase的Paxos副本数量为2,或者说不知道能不能关闭Paxos协议,如果关闭后好像会有“脑裂”的问题。这样可行吗
厉害了!!!!大佬!
不可以关闭