OceanBase 数据库提供多种部署模式,可根据对机房配置以及性能和可用性的需求进行灵活选择。
同城三机房
如果没有异地机房,并且对可靠性要求不是特别的高,采用同城三机房部署方案可以达到机房级容灾。同城机房间的网络延迟一般在 0.5~2ms 之间,所以这种方案具有非常高的性能。更进一步的,甚至可以在同机房的多个机架上部署三个 Zone,能够做到机架级容灾,同时获得更高的性能。
两地三中心三副本
两地三中心是一类实现高可用和异地容灾的部署模式。通过在两地的三个中心分别部署一个副本,其中两个副本位于同一个城市,正常情况下事务提交在同城的两个副本完成同步即可,所以具备和同城三机房同样的性能。同时当少数副本所在的城市发生地域级故障时,整个 OceanBase 数据库集群的服务不受影响,并且不丢数据。但是当多数副本所在城市发生地域级故障时,会导致 OceanBase 数据库停服务。所以相对于同城三机房可用性虽然有大幅的提升,但是本质上这还是一个机房级容灾方案。
两地三中心五副本
两个城市,一个城市为主城市,另外一个城市为备城市。主城市包含两个机房,每个机房两个副本;备城市只包含一个机房,这个机房只有一个副本。这一方案是两地三中心三副本部署方案的进化,用于解决两地三中心三副本部署方案在多副本所在城市发生机房故障时引入的事务提交跨城市问题。主副本在主城市的数据中心 1,如果数据中心 2 整体故障,那么,Paxos 协议会将数据中心 2 中的两个副本从成员列表中剔除,成员组由 5 个副本降级为 3 个副本,以后只需要强同步 3 个副本中的 2 个即可。大部分情况下,强同步操作可以在数据中心 1 内完成,避免跨城市同步。类似地,如果数据中心1整体故障,那么,Paxos 协议需要首先将主副本切到数据中心 2,接着再将成员组由 5 个副本降级为 3 个副本,以后强同步操作可以在数据中心 2 内完成,避免跨城市同步。
为了节省成本,可以分别将数据中心 1 和数据中心 2 的各 1 个副本部署为日志副本。日志副本不提供服务,仅仅接受日志用于故障恢复,从而只需要存储并服务 3 份数据。
三地三中心五副本
两地三中心部署方案的问题在于不支持异地容灾。为了支持地区级无损容灾,通过 Paxos 协议的原理可以证明,至少需要 3 个地区。OceanBase 数据库采用的是两地三中心的变种方案:三地三中心五副本。该方案包含三个城市,每个城市一个机房,前两个城市的机房各有两个副本,第三个城市的机房只有一个副本。和两地三中心的不同点在于,每次执行事务至少需要同步到两个城市,需要业务容忍异地复制的延时。
三地五中心五副本
和三地三中心五副本类似,不同点在于,三地五中心会把每个副本部署到不同的机房,进一步强化机房容灾能力。