请问RS 故障后,怎么选择主,上面多个副本,副本之间怎么选举,
根据文档库中的信息,当 RS(Root Service)发生故障后,OceanBase 数据库通过以下机制选择新的主副本(Leader):
-
选举机制:
- OceanBase 使用 Paxos 协议来保证在任一时刻只有多数派副本达成一致时,才能推选一个 Leader。这意味着在任一时刻,只有当多数派副本达成一致时,才能选举出一个新的 Leader。
- 选举过程依赖于时钟同步,每台机器之间的时钟误差不能超过 200 毫秒,集群的每台机器应部署 NTP 或其他时钟同步服务以保证时钟一致。
-
选举流程:
- 无主选举:在集群启动或者当前 Leader 连任失败时,会进行无主选举。在这种情况下,多个副本会通过 Paxos 协议进行投票,最终选举出一个新的 Leader。
- 有主连任:在正常情况下,当前 Leader 会不断发起连任请求,只要多数派副本同意,Leader 就可以继续担任主副本。
- 有主改选(切主):如果当前 Leader 在续约流程中发现某个 Follower 比它的优先级更高,它会执行切主流程“让贤”。
-
租约机制:
- 当一个副本被选举为 Leader 后,它会签订一个租约(Lease)。在租约过期前,Leader 会不断发起连任请求,以保持其 Leader 身份。
- 如果 Leader 没有连任成功,在租约到期后会周期性地发起无主选举,以保证副本的高可用。
-
故障检测与恢复:
- 当 Leader 副本出现故障时,Follower 副本会在租约过期后自动触发选举,选举出新的 Leader。
- 选举过程中,Follower 副本会通过 Paxos 协议达成一致,确保新的 Leader 被正确选举出来。
-
高可用性:
- 在少数派的备节点出现故障时,主节点的服务不受任何影响。
- 在主节点故障或网络分区时,多数派的备节点会等待租约过期,然后自动选举出新的 Leader 继续提供服务。
综上所述,OceanBase 数据库通过 Paxos 协议和租约机制确保在 RS 故障后能够快速、可靠地选举出新的 Leader,从而保证系统的高可用性。 [1], [3], [3], [5], [6]
检索到的文档如下:
根据文档库中的信息,当一个节点上同时存在 Leader 副本和 Follower 副本时,该节点的选举过程如下:
选举过程
-
无主选举:
- 当一个分区没有 Leader 时,该分区的所有副本会进行无主选举。
- 无主选举的触发场景包括集群重启分区第一次选举和分区原 Leader 故障。
- 无主选举需要等待原 Leader 的 Lease 过期后才能开始。 [2]
-
有主连任:
- 当前 Leader 副本会周期性地发起连任请求,以保持其 Leader 身份。
- 只要多数派副本同意,Leader 就可以继续担任主副本。 [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 个赞
小助手提供的回复是否解决了你的问题呢?