Primary zone 设置为:ZONE1,ZONE2;ZONE3,如果ZONE1和ZONE2网络不通,而ZONE1、ZONE2与ZONE3网络是好的,集群会怎么样?

有没有大佬解惑一下?我理解的跟ai给的答案貌似不一样,看看各位老师是怎么理解的。

5 个赞

还能有这情况么,Zone1和Zone2之间网络不通,但Zone1、Zone2和Zone3网络都是好的,那说明Zone1和Zone2之间的流量被阻止了,有防火墙么?

2 个赞

你观察到什么现象,可以先做一个记录,以后不断更新自己的认知。
zone1 与zone3 ,zone2 与zone3 相通,zone1与zone2 不通,三个应该还是保持一致吧!我理解!
zone1 与zone3 相通,zone1 作为主副本,接收并强同步,zone 3 更新后,zone2 也是一个从副本,从zone3 中更新数据!
同理zone2 与zone3 ,zone2 更新数据,zone3 作为从副本,同步更新后,zone1 也是一个从副本,从zone3 中更新数据!

2 个赞

自然会优先使用ZONE3咯

1 个赞

我理解会分成两个子集群:ZONE1和ZONE3子集群(2/3满足多数派),ZONE2和ZONE3子集群(2/3满足多数派),两个多数派间存在交集ZONE3,所以这两个子集群在同一个日志流里边不会选出两个leader。
如果涉及分布式事务,事务回滚;如果是非分布式事务可以正常使用。

PS:这个是OBCE V4 里边的题目,我没有环境可以验证,不知道是否正确。

点赞

1 个赞

可以的

@论坛小助手

您好,您的问题主要涉及到 OceanBase 在特定网络环境下(如某些 Zone 之间网络不通)的行为表现。根据您提供的信息和 OceanBase 的高可用机制,我们可以这样理解:

当前场景

  • Primary Zone 设置ZONE1, ZONE2; ZONE3
  • 网络状况ZONE1ZONE2 之间网络不通,但 ZONE1ZONE3 以及 ZONE2ZONE3 之间的网络是通的。

行为分析

  1. Leader 所在一侧继续正常服务

    • 假设当前 Leader 在 ZONE1(或 ZONE2,逻辑对称):
      • ZONE1(Leader):正常。向 ZONE3 同步日志成功,ZONE1 + ZONE3 形成 2/3 多数派,写入正常提交。
      • ZONE3(Follower):正常。能收到 ZONE1(Leader)的日志和选举心跳,持续同步。
      • ZONE2(Follower):降级/落后。无法收到 ZONE1(Leader)的日志和心跳,副本数据开始滞后。
  2. 被隔离的 Follower 无法抢主

    • ZONE2 的 Follower 在收不到 ZONE1(Leader)的心跳后,租约超时会尝试发起无主选举。
    • 但是,ZONE2 要当选需要获得 ZONE3 的投票。
    • ZONE3 此时仍持有对 ZONE1(现任 Leader)的有效租约,因此 ZONE3 不会在租约期内投票给 ZONE2
    • 因此,ZONE2 的选举请求会失败,Leader 不会切换。

总结

  • 结果:系统会形成两个子集群:ZONE1ZONE3 子集群(2/3 满足多数派),ZONE2ZONE3 子集群(2/3 满足多数派)。由于两个子集群之间存在交集 ZONE3,它们在同一个日志流里边不会选出两个 Leader。
  • 事务处理:如果是分布式事务,事务会回滚;如果是非分布式事务,可以正常使用。

您的理解基本是正确的。如果有任何疑问或需要进一步确认的地方,建议联系 OceanBase 的技术支持团队以获取更详细的解答。希望这能帮到您!

更多信息请查看:

  1. HELP
  2. ha_low_thread_score
  3. 向量检索实践教程概述
  4. ha_mid_thread_score
  5. 系统视图总览
  6. 遇到问题如何向技术支持同学提问
  7. ha_high_thread_score
  8. 基于 OceanBase 构建智能问答机器人
  9. ALTER USER