如果没有异地机房,并且对可靠性要求不是特别的高,采用同城三机房部署方案可以达到机房级容灾。同城机房间的网络延迟一般在 0.5~2ms 之间,所以这种方案具有非常高的性能。更进一步的,甚至可以在同机房的多个机架上部署三个 Zone,能够做到机架级容灾,同时获得更高的性能。

    两个城市,一个城市为主城市,另外一个城市为备城市。主城市包含两个机房,每个机房两个副本;备城市只包含一个机房,这个机房只有一个副本。这一方案是两地三中心三副本部署方案的进化,用于解决两地三中心三副本部署方案在多副本所在城市发生机房故障时引入的事务提交跨城市问题。主副本在主城市的数据中心 1,如果数据中心 2 整体故障,那么,Paxos 协议会将数据中心 2 中的两个副本从成员列表中剔除,成员组由 5 个副本降级为 3 个副本,以后只需要强同步 3 个副本中的 2 个即可。大部分情况下,强同步操作可以在数据中心 1 内完成,避免跨城市同步。类似地,如果数据中心1整体故障,那么,Paxos 协议需要首先将主副本切到数据中心 2,接着再将成员组由 5 个副本降级为 3 个副本,以后强同步操作可以在数据中心 2 内完成,避免跨城市同步。

    两地三中心部署方案的问题在于不支持异地容灾。为了支持地区级无损容灾,通过 Paxos 协议的原理可以证明,至少需要 3 个地区。OceanBase 数据库采用的是两地三中心的变种方案:三地三中心五副本。该方案包含三个城市,每个城市一个机房,前两个城市的机房各有两个副本,第三个城市的机房只有一个副本。和两地三中心的不同点在于,每次执行事务至少需要同步到两个城市,需要业务容忍异地复制的延时。