请问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 个赞

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

回复不是很准确

感谢您的反馈,我会进一步澄清和详细说明。

选举过程

在 OceanBase 中,一个节点上可以同时存在 Leader 副本和 Follower 副本。当需要选举新的 Leader 时,选举过程如下:

  1. 无主选举

    • 当一个分区没有 Leader 时,该分区的所有副本会进行无主选举。
    • 无主选举通常发生在集群启动或当前 Leader 故障且租约过期后。
    • 选举过程中,所有副本通过 Paxos 协议达成一致,选出新的 Leader。
  2. 有主连任

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

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

选举次数

  • 单次选举

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

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

具体场景

  1. 节点上的 Leader 和 Follower 副本

    • 当一个节点上同时存在 Leader 副本和 Follower 副本时,该节点上的 Leader 副本会继续担任 Leader,除非它因为某些原因(如故障、优先级变化等)需要被替换。
    • 如果该节点上的 Leader 副本需要被替换,会触发切主选举,选举过程涉及该节点上的所有副本。
  2. 选举过程中的角色转换

    • 在选举过程中,一个节点上的 Follower 副本可能会被选举为新的 Leader。
    • 选举过程中,所有参与选举的副本都会通过 Paxos 协议达成一致,确保新的 Leader 被正确选举出来。

例子

假设有一个分区 A,该分区在节点 N1 上有一个 Leader 副本,在节点 N2 和 N3 上有两个 Follower 副本。

  • 无主选举

    • 如果 N1 故障且租约过期,N2 和 N3 会通过 Paxos 协议选举新的 Leader。
    • 选举过程中,N2 和 N3 会达成一致,选出新的 Leader。
  • 有主连任

    • 如果 N1 正常运行,它会周期性地发起连任请求,保持其 Leader 身份。
  • 有主改选(切主)

    • 如果 N1 因为某些原因需要被替换,会触发切主选举。
    • 选举过程中,N2 和 N3 会通过 Paxos 协议达成一致,选出新的 Leader。

总结

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

希望这次的解释更加清晰和准确。如果有任何进一步的问题,请随时告知。

更多信息请查看:

  1. 并行查询的执行
  2. JSON_SCHEMA_VALIDATION_REPORT
  3. 备租户转为主租户
  4. 向量检索常见问题
  5. DAYNAME
  6. is_result_accurate
  7. ADD RESTORE SOURCE
  8. REGEXP
  9. oceanbase.CDB_OB_RECOVER_TABLE_JOB_HISTORY
  10. oceanbase.DBA_OB_RECOVER_TABLE_JOB_HISTORY

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

细致描述一下你的问题