基于日志异步复制的物理备库解决方案
该方案类似于传统数据库的主备复制解决方案。两个或多个集群之间,允许以租户为粒度,通过异步复制 Redo 日志来构建租户级别的主备关系,提供计划内无损切换和故障时有损切换两种容灾能力。
该方案主要用于满足双机房或双地域场景下的容灾需求。主租户提供读写能力,备租户提供只读和容灾能力。在执行计划内无损切换时,主租户和备租户互换角色,不丢数据(RPO = 0),切换时间为秒级(RTO 为秒级)。
当主租户所在的集群出现故障后,可以执行有损切换,将备租户切换为主租户。此时不能保证不丢数据,RPO 大于 0,切换时间为秒级(RTO 为秒级)。
物理备库容灾
在一组使用物理备库的方案中,可以包含一个主租户和一个或多个备租户。主租户为业务提供读写服务,备租户通过 Redo 日志实时同步业务在主租户上写入的数据。
一个主租户和对应的备租户可以部署在距离相近或相隔很远的多个不同的 OceanBase 集群中,也可以部署在同一个 OceanBase 集群中。相应的,同一个 OceanBase 集群中既可以包含主租户,也可以包含备租户,也可以同时包含主备租户。主租户和备租户的租户名称不要求相同,租户的资源规格、配置、Locality 等也不要求相同。
此外,主租户和备租户既可以是单副本的租户,也可以是多副本或具备仲裁高可用能力的租户,不同的部署方式为租户提供不同级别的副本级容灾能力。
租户级别的物理备库为用户的使用提供了极大的灵活性,下面介绍几种典型的部署使用场景。
集群中仅有主租户或备租户
在该部署方案中,用户有多个 OceanBase 集群,每个 OceanBase 集群包含的业务租户或者都是主租户,或者都是备租户。
该部署方案是一种最典型的部署模式,用户可以使用物理备库功能完成异地容灾等各种所需的需求。
部署架构图如下所示。
集群中既有主租户又有备租户
在该部署方案中,用户有多个 OceanBase 集群,每个集群中既有主租户又有备租户,同时也允许集群中的租户只有主租户没有备租户。
一个典型的使用场景如下:
业务在两个不同的地域均有读写和异地容灾需求,因此需要在两个地域既有主库又有备库。在使用其他数据库基于主备的方案中,用户需要在两个地域各部署两个(或多个)集群,地域之间的集群互为主备。
在 OceanBase 数据库的部署方案中,仅需要在两个地域各部署一个集群,通过租户级别的主备即可满足业务需求,大大简化数据库集群的管理复杂度。部署架构图如下所示。
主租户和备租户在同一个集群中
在该部署方案中,用户只有一个 OceanBase 集群,主租户和对应的一个或多个备租户均在同一个 OceanBase 集群中。
可能使用该种部署方案的场景如下:
假设某个业务租户需要在业务升级前保留一个数据库的快照。此时可以为该业务租户在同一个集群内创建一个实时同步的备租户,并在业务执行升级操作前将该备租户暂停同步。之后,业务可以在主租户上进行任意读写操作(例如,进行业务升级),并且这些操作均不会影响备租户。后续若业务升级失败,可以将当前主租户删除,并将备租户切换为新的主租户(通过将新租户名修改为原主租户名,可以保证 Proxy 的访问不变)。
部署架构图如下所示。