跳到主要内容

ApeCloud MySQL 简介

MySQL 是全球最流行的开源数据库,受到许多公司的欢迎,例如 Facebook、Twitter、Netflix、Uber、Airbnb、Shopify 和 Booking 等。

KubeBlocks 采用了 ApeCloud 公司提供的 MySQL 高可用版本,做了数据压缩和高可用性方面的改进。

  • 当节点数大于等于 3 个时,通过一致性算法协议构成强一致高可用性集群,确保在单可用区故障的情况下 RPO=0。其中,主节点提供读写能力,其余节点提供只读服务。
  • 当节点数等于 2 时,构成主备复制集群,其中主节点提供读写能力,备节点通过异步复制与主节点保持同步,提供只读服务和故障容灾能力。
  • 当节点数等于 1 时,构成单节点集群,提供读写服务。KubeBlocks 仍然提供自动恢复能力,在云盘不损坏的情况下保证 RPO=0。

实例角色

ApeCloud MySQL 支持四种角色类型,即 Leader(领导者)、Follower(跟随者)、Candidate(候选者)和 Learner(学习者)。Leader 和 Follower 组成高可用性集群,提供 RPO=0 能力。

  • Leader:Leader 是集群的主实例,支持读写操作,是集群强一致节点。由所有参与选举的 Candidate 投票产生。得票数最多的 Candidate 成为 Leader,其他的成为 Follower。
  • Follower:Follower 支持数据一致性只读服务,并与 Leader 和其他 Follower 组成高可用性集群。
  • Learner:Learner 通常用于跨地域的一致性只读数据节点实例,通过 Paxos 协议实现数据同步,数据同步源可以是 Leader 或 Follower。Learner 是一致性算法协议中的特殊角色,不参与投票,也不成为 Candidate,类似旁听角色。
  • Candidate:Candidate 是一个中间角色,只在选举过程或无法形成多数派选出 Leader 时存在。一般来说,高可用集群中的所有 Candidate 在选举完成后,最终都会成为 Leader 或 Follower 角色。
角色类型LeaderFollowerLearnerCandidate
功能能力RW/HARO/HARO-

ApeCloud MySQL 角色切换

故障切换

故障切换将重定向流量,把正在执行的任务从主节点切换到从节点。

只读功能

节点提供只读能力。除了 Follower 角色之外,还可以通过添加 Learner 角色来扩展集群的只读能力。需要注意的是,通过 Follower 或 Learner 执行只读操作时,可能会与 Leader 存在数据延迟。这种延迟可能是由于日志同步延迟或日志回放延迟导致的。

容错性

集群具备节点故障容错能力。在 n 个节点集群下,可以容忍的故障节点数为 floor(n/2) + 1,其中 n=[1,99],满足 Paxos 算法协议的要求。基于此,可以得出在指定可容忍节点故障数为 f 的情况下,需要创建的节点数为 n=2*f+1,其中 f>=0。例如,如果可容忍的故障节点数为 1,则根据公式可知,集群中的最小节点数为 3。即,在一个 Paxos 组中,能够保证具有 1 个故障节点下集群的持续服务能力。根据下表可以看出,创建奇数个节点集群更具性价比。

集群节点数节点大多数可容忍故障节点数
321
431
532
642
743
853
954
1064