以机房级容灾和地域级容灾为例,介绍主备库典型的应用场景。
双机房
机房作为独立的容灾单元,用户有机房级容灾的需求。只有两个机房情况下,用户希望在任何一个机房不可用时,另一个机房可以接管服务。
单集群部署情况下,如果跨机房部署,必然有一个机房中有多数派副本。多数派副本所在机房不可用情况下,主集群会停服务。因此,单集群部署满足不了双机房的容灾需求。
一主一备部署方案可以解决双机房容灾问题。主集群部署在应用主机房,多副本架构,满足机器级容灾能力。备集群部署在应用备机房,可以选择单副本,降低部署成本,也可以选择多副本,让备集群也具备机器级容灾能力。
备机房不可用时,不影响主集群服务;主机房不可用时,备集群可以 failover 成新主集群,接管服务。这样就满足了机房级容灾需求。
两地三中心
两地三中心指:机房分布在两个地域,一个地域有两个机房,一个地域有一个机房。用户期望不仅能达到机房级容灾能力,也能够达到地域级容灾能力,即任何一个地域故障,另一个地域可以接管服务。
OceanBase 数据库有成熟的两地三中心解决方案:两地三中心五副本。举例说明,上海有两个机房,杭州有一个机房,上海每个机房部署两个副本,杭州单机房部署一个副本。任何一个机房不可用时,多数派副本都是存活的,可以实现无损容灾(RTO = 0)。不过如果出现上海地域级故障,多数派副本将不可用,主集群会停服务。因此,两地三中心模式下,单集群部署满足不了地域级容灾需求。
一主一备部署方案可以解决两地三中心地域级容灾问题。杭州机房可以部署一个备集群,单副本或多副本。杭州地域级故障时,不影响主集群服务;上海地域级故障时,备集群可以 failover 成新主集群,接管服务。这样就满足了地域级容灾需求。