请问RS 故障后,怎么选择主,上面多个副本,副本之间怎么选举,

@论坛小助手

请问RS 故障后,怎么选择主,上面多个副本,副本之间怎么选举,

根据文档库中的信息,当 RS(Root Service)发生故障后,OceanBase 数据库通过以下机制选择新的主副本(Leader):

  1. 选举机制

    • OceanBase 使用 Paxos 协议来保证在任一时刻只有多数派副本达成一致时,才能推选一个 Leader。这意味着在任一时刻,只有当多数派副本达成一致时,才能选举出一个新的 Leader。
    • 选举过程依赖于时钟同步,每台机器之间的时钟误差不能超过 200 毫秒,集群的每台机器应部署 NTP 或其他时钟同步服务以保证时钟一致。
  2. 选举流程

    • 无主选举:在集群启动或者当前 Leader 连任失败时,会进行无主选举。在这种情况下,多个副本会通过 Paxos 协议进行投票,最终选举出一个新的 Leader。
    • 有主连任:在正常情况下,当前 Leader 会不断发起连任请求,只要多数派副本同意,Leader 就可以继续担任主副本。
    • 有主改选(切主):如果当前 Leader 在续约流程中发现某个 Follower 比它的优先级更高,它会执行切主流程“让贤”。
  3. 租约机制

    • 当一个副本被选举为 Leader 后,它会签订一个租约(Lease)。在租约过期前,Leader 会不断发起连任请求,以保持其 Leader 身份。
    • 如果 Leader 没有连任成功,在租约到期后会周期性地发起无主选举,以保证副本的高可用。
  4. 故障检测与恢复

    • 当 Leader 副本出现故障时,Follower 副本会在租约过期后自动触发选举,选举出新的 Leader。
    • 选举过程中,Follower 副本会通过 Paxos 协议达成一致,确保新的 Leader 被正确选举出来。
  5. 高可用性

    • 在少数派的备节点出现故障时,主节点的服务不受任何影响。
    • 在主节点故障或网络分区时,多数派的备节点会等待租约过期,然后自动选举出新的 Leader 继续提供服务。

综上所述,OceanBase 数据库通过 Paxos 协议和租约机制确保在 RS 故障后能够快速、可靠地选举出新的 Leader,从而保证系统的高可用性。 [1], [3], [3], [5], [6]

检索到的文档如下:

  1. 分布式选举
  2. 高可用架构概述
  3. 高可用 FAQ
  4. OceanBase 术语
  5. 集群管理 FAQ
  6. Paxos 协议
  7. 少数派节点故障

@论坛小助手 一个节点上 Leader 副本,也有Follower副本,这个节点怎么选举呀?选举一次,还是多次?

根据文档库中的信息,当一个节点上同时存在 Leader 副本和 Follower 副本时,该节点的选举过程如下:

选举过程

  1. 无主选举

    • 当一个分区没有 Leader 时,该分区的所有副本会进行无主选举。
    • 无主选举的触发场景包括集群重启分区第一次选举和分区原 Leader 故障。
    • 无主选举需要等待原 Leader 的 Lease 过期后才能开始。 [2]
  2. 有主连任

    • 当前 Leader 副本会周期性地发起连任请求,以保持其 Leader 身份。
    • 只要多数派副本同意,Leader 就可以继续担任主副本。 [3]
  3. 有主改选(切主)

    • 如果当前 Leader 在续约流程中发现某个 Follower 比它的优先级更高,它会执行切主流程“让贤”。
    • 常见的切主原因包括 primary_zone 发生变更、发生 Stop Server/Stop Zone 的操作、发生 OBServer Stopped(即 kill -15)的操作、发生日志流的迁移等。 [3]

选举次数

  • 单次选举

    • 在无主选举的情况下,每个分区只会进行一次选举,直到选出新的 Leader。
    • 一旦新的 Leader 被选举出来,它会签订一个租约(Lease),并在租约过期前不断发起连任请求。
  • 多次选举

    • 在有主改选(切主)的情况下,可能会发生多次选举。
    • 例如,如果当前 Leader 因为优先级变化或其他原因需要被替换,会触发一次切主选举。
    • 如果新的 Leader 再次遇到类似的情况,可能会再次触发切主选举。

选举机制的高可用性

  • 租约机制

    • Leader 副本在签订租约后,会在租约过期前不断发起连任请求,以保持其 Leader 身份。
    • 如果 Leader 没有连任成功,在租约到期后会周期性地发起无主选举,以保证副本的高可用性。 [4]
  • Paxos 协议

    • 选举过程中,Follower 副本会通过 Paxos 协议达成一致,确保新的 Leader 被正确选举出来。
    • Paxos 协议保证了在任一时刻只有多数派副本达成一致时,才能推选一个 Leader。 [1]

总结

在一个节点上同时存在 Leader 副本和 Follower 副本的情况下,选举过程会根据具体情况决定是一次选举还是多次选举。无主选举通常只进行一次,而有主改选(切主)可能会多次发生。通过租约机制和 Paxos 协议,OceanBase 确保了选举过程的正确性和高可用性。 [1], [2], [3], [4], [3]

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

  1. 分布式选举
  2. OceanBase 术语
  3. 集群管理 FAQ
  4. 无主
  5. 日志存储服务
1 个赞

小助手提供的回复是否解决了你的问题呢?