OceanBase 云数据库集群实例可以通过添加备实例,组成一主多备的集群网络,主备实例之间保持数据同步,进一步提升数据库的高可用能力。

原理介绍

主备实例架构为一主(Primary)多备(Physical_Standby),备实例不支持级联添加备实例。主备实例之间通过日志异步复制保持数据同步,日志异步复制不会影响主实例的稳定性和性能。

当主实例出现计划内或计划外(多数派副本故障)的不可用情况时,备实例可以接管服务,并且提供无损切换(RPO = 0)和有损切换(RPO > 0)两种容灾能力,最大限度降低服务的停机时间。详情参见 切换为主实例。主备实例均可提供读服务,只有主实例可以提供写服务。

主备架构图

流程图说明:

步骤

说明

1

用户的 APP(业务系统)向主集群的数据库节点(运行 OBServer 进程的服务器)写入/读取数据。

2

主集群(生产集群)的数据写入生成 REDO 日志。

3

主集群自动向备集群通过日志异步复制的方式传输 REDO 日志。

4

备集群(主集群的数据备份)的数据库节点接收 REDO 日志并回放数据。

5

用户的 APP(业务系统)从备集群的数据库节点读取数据。

使用场景

主备实例的使用场景主要包括以下两种:

  • 同城容灾

阿里云上的部分地域仅提供两个可用区,OceanBase 单实例三副本无法提供机房(可用区)级别的容灾能力。在这种场景下,可以通过在两个可用区创建主备实例,实现跨机房的数据库高可用,当一个机房出现故障时,只需要将业务手动切换到备实例即可。

  • 异地容灾

如果业务部署在多个地域,可以通过在多个地域创建主备实例,实现跨地域的数据库高可用,当一个地域出现故障时,只需要将业务手动切换到备实例即可。

说明

主备实例切换耗时约 5 分钟,切换过程中,可能会出现链接闪断。建议在业务低谷期执行主备切换,同时建议使用链接池等技术手段确保业务具备自动重连机制。

主备实例操作列表

您可以根据业务需要创建备实例,并可对主备实例分别进行以下操作:

实例类型

操作

主实例

可以为主实例创建一个或多个备实例,详情参见 创建备实例

备实例

主实例的租户同步到备实例之后,需要手动为备实例的租户添加主地址,详情参见 添加备实例租户主地址

在主备容灾场景,可以将备实例切换为主实例,保障数据的一致性和业务的可用性,详情参见 切换为主实例

在业务拆分等场景,可以将备实例从主备实例场景变更为两个独立的集群实例,提搞资源利用率,详情参见 解耦备实例