OceanBase 数据库提供了多种高可用性功能,涵盖集群内的多副本容灾、基于仲裁的容灾以及集群间的物理备库容灾。
在规划数据库集群的高可用性部署时,需综合考虑业务需求和数据中心布局。若业务场景严格要求三副本或五副本配置,则需基于副本数量进行考量,并评估数据中心配置以确认高可用部署的可行性;若业务跨越多个异地数据中心,则需从数据中心布局出发,结合业务需求来制定高可用部署策略。因此,本文将从副本数量及地域分布两个层面,深入讨论OceanBase集群高可用部署的可行性。
一、根据副本数考虑高可用部署
(一)三副本
三副本的部署分为三种情况,分别是 IDC 集中在一个地域、IDC 分布在两个地域以及 IDC 分布在三个地域。
1、IDC 集中在一个地域
🚩 情况一:单个机房时,可以采用最简约的部署方式,即部署为同机房三副本架构。
该架构为同机房内三副本组成一个集群,同一份副本部署在相同容灾能力的一组机器上,例如:同一个机架、同一个电源等。该架构能够防范少数派节点故障,即实现机器级无损容灾或机架级无损容灾,但无法防范机房级故障(例如,机房网络中断、电力中断等)、地域级故障(例如,地震、海啸、台风等自然灾害等)。
🚩 情况二:当有两个机房时,可以部署为同城双机房物理备库。
如果同城只有双机房,又想达到机房级容灾能力,可以采用物理备库,每个机房部署一个集群,每个集群三副本,一个为主库一个为备库,每个集群有自己单独的 Paxos group,三副本保持一致性;集群间通过 RedoLog 做数据同步,形式上类似传统数据库主从复制模式,从主库异步同步到备库,类似 Oracle Data Guard 中的最大性能模式。
当任何一个机房不可用时,另一个机房可以接管业务服务。如果备机房不可用,此时业务数据不受影响,可以持续提供服务;如果主机房不可用,备库需要激活成新主库,接管业务服务,由于备库不能保证同步所有数据,因此可能会丢失数据。该架构可以实现(主机房故障时)机房级有损容灾,但不具备地域级容灾能力。
🚩 情况三:当有三个机房时,可以部署为同城三机房三副本。
面向具备一个城市三个机房的场景,可以每个机房部署一个 Zone,三个机房组成一个集群,机房间网络延迟一般在 0.5 ~ 2 ms 之间。
任何一个机房不可用时,可以利用剩下的两个机房仍满足多数派仍可以继续提供服务,不丢失数据,从而达到机房级无损容灾能力。这种部署架构虽然不依赖物理备库,但同样不具备地域级容灾能力。
2、IDC 分布在两个地域
🚩 情况一:当有两个机房时,可以部署为两地两中心物理备库。
这里有两个方案,当希望达到地域级容灾时,可以采用物理备库架构,选择一个地域作为主地域,部署主库,另一个地域作为备地域,部署备库。当备地域不可用时,不影响主地域的业务服务;当主地域不可用时,备库可以激活为新主库继续提供服务,这种情况下可能会丢失业务数据。
另一个高可用性能更高的方案是,利用两地两中心实现双活,即每个地域的机房都部署主库和物理备库,两个地域互为主备。这样可以更加高效利用资源,并且达到更高的容灾能力。
🚩 情况二:当有三个机房时,可以部署为两地三中心加物理备库。
当在两个地域有三个机房时,将有两个机房的地域称为主地域,在主地域两个机房里各部署一个全功能副本,数据库的读写服务在主地域提供,另外一个地域机房中部署仲裁服务和物理备库,提供容灾服务,整个集群可以共三个副本。
在主地域一个机房出现故障时,仲裁方案会自动执行降级,确保业务在秒级恢复,同时不丢失数据。在主地域两个机房同时出现故障时,需要将物理备库激活成主库提供服务,此时业务有损,RPO > 0。该架构可提供地域级容灾能力。
3、IDC 分布在三个地域
IDC 在三个地域的场景,一般不太会要求三副本,这里不做过多讨论。
(二)五副本
五副本的部署分为三种情况,分别是 IDC 集中在一个地域、IDC 分布在两个地域以及 IDC 分布在三个地域。
1、IDC 集中在一个地域
🚩 情况一:IDC 在一个地域的场景,要求五副本,基本不太会做单机房,这里不做过多讨论。
🚩 情况二:当同城两个机房时,可以考虑部署为同城双机房物理备库架构。
🚩 情况三:当同城三个机房时,可以部署为同城三机房物理备库架构、同城三机房五副本或者同城三机房四副本+仲裁服务架构。
2、IDC 分布在两个地域
🚩情况一:当有两个机房时,可以部署为两地两中心物理备库。架构跟三副本一样,只是每个集群部署为五副本。
🚩 情况二:当有三个机房,可以部署为两地三中心加物理备库架构。
IDC 分布在两个地域,主城市与备城市组成一个五副本的集群,主城市四个副本分布于两个机房,备城市一个副本。任何 IDC 的故障,最多损失两个副本,剩余的三份副本依然满足多数派。该架构能够防范少数派节点故障,能够防范单机房故障,无法防范主城市的故障。
备用城市建设一个独立的三副本集群,作为一个备库,从主库 "异步同步" 到备库,一旦主城市遭遇灾难,备城市可以接管业务。该架构可以防范少数派节点故障、单机房故障,但无法防范主城市的故障。
3、IDC 分布在三个地域
🚩 情况一:当有三个机房时,可以部署为三地三中心五副本。
当三个城市每个城市一个机房,前两个城市的机房可以部署各两个副本,第三个城市的机房只有一个副本,主城市与备城市组成一个五副本的集群。和两地三中心的不同点在于,每次执行事务至少需要同步到两个城市,需要业务容忍异地复制的延时。
🚩 情况二:当有五个机房时,可以部署为三地五中心五副本。
每个机房各一个副本,任何一个机房或者城市的故障,依然构成多数派,可以确保 RPO=0。由于 3 份以上副本才能构成多数派,但每个城市最多只有 2 份副本,为降低时延,有两个机房的城市应该离得较近,以降低同步 Redo Log 的时延。该架构可以防范少数派节点故障、少数派机房故障、少数派城市故障。
二、根据 IDC 的地域分布情况考虑高可用部署
(一)IDC 集中在一个地域
1、三副本
当有一个机房时,可以部署为最简约配置,即同机房三副本架构,满足(少数派副本故障时)机器级无损容灾或机架级无损容灾。
当有两个机房时,可以部署为同城双机房物理备库架构,实现(主机房故障时)机房级有损容灾,不具备地域级容灾能力。
当有三个机房时,可以部署为同城三机房三副本架构,实现(少数派副本故障时)机房级无损容灾。
2、五副本
基本单机房,不考虑五副本,这里不过多讨论。
当有两个机房时,可以部署为同城双机房物理备库架构,实现(主机房故障时)机房级有损容灾,不具备地域级容灾能力。
当有三个机房时,可以部署为同城三机房物理备库架构或同城三机房五副本或者同城三机房四副本+仲裁服务方案。
(二)IDC 分布在两个地域
1、三副本
当有两个机房时,可以部署为两地两中心物理备库。实现(地域故障时)有损容灾。
当有三个机房时,可以部署为两地三中心加物理备库。根据部署情况实现(机房故障时)无损容灾或(地域故障时)有损容灾。
2、五副本
当有两个机房时,可以部署为两地两中心物理备库。实现(地域故障时)有损容灾。
当有三个机房时,可以部署为两地三中心加物理备库。根据部署情况实现(机房故障时)无损容灾或(地域故障时)有损容灾。
(三)IDC 分布在三个地域
1、三副本
一般 IDC 在三个地域,不太可能要求三副本,所以不过多讨论。
2、五副本
当有三个机房时,可以部署为三地三中心五副本,实现(地域故障时)无损容灾。
当有五个机房时,可以部署为三地五中心五副本,实现(地域故障时)无损容灾。
为满足不同客户和业务场景多样的容灾需求,OceanBase 数据库提供了多种高可用解决方案:基于 Paxos 一致性协议的多副本高可用解决方案,基于日志异步复制的物理备库解决方案,基于仲裁的高可用解决方案。这三种高可用解决方案可以组合使用,用户可根据对机房配置以及性能和可用性的需求进行灵活选择不同的部署架构。




