OceanBase 云数据库集群实例可以通过添加备实例,组成一主多备的集群网络,主备实例之间保持数据同步,进一步提升数据库的高可用能力。
原理介绍
主备实例架构为一主(Primary)多备(Physical_Standby),备实例不支持级联添加备实例。主备实例之间通过日志异步复制保持数据同步,日志异步复制不会影响主实例的稳定性和性能。
当主实例出现计划内或计划外(多数派副本故障)的不可用情况时,备实例可以接管服务,并且提供无损切换(RPO = 0)和有损切换(RPO > 0)两种容灾能力,最大限度降低服务的停机时间。详情参见 切换为主实例。主备实例均可提供读服务,只有主实例可以提供写服务。
流程图说明:
步骤 | 说明 |
1 | 用户的 APP(业务系统)向主集群的数据库节点(运行 OBServer 进程的服务器)写入/读取数据。 |
2 | 主集群(生产集群)的数据写入生成 REDO 日志。 |
3 | 主集群自动向备集群通过日志异步复制的方式传输 REDO 日志。 |
4 | 备集群(主集群的数据备份)的数据库节点接收 REDO 日志并回放数据。 |
5 | 用户的 APP(业务系统)从备集群的数据库节点读取数据。 |
使用场景
主备实例的使用场景主要包括以下两种:
同城容灾
阿里云上的部分地域仅提供两个可用区,OceanBase 单实例三副本无法提供机房(可用区)级别的容灾能力。在这种场景下,可以通过在两个可用区创建主备实例,实现跨机房的数据库高可用,当一个机房出现故障时,只需要将业务手动切换到备实例即可。
异地容灾
如果业务部署在多个地域,可以通过在多个地域创建主备实例,实现跨地域的数据库高可用,当一个地域出现故障时,只需要将业务手动切换到备实例即可。
主备实例切换耗时约 5 分钟,切换过程中,可能会出现链接闪断。建议在业务低谷期执行主备切换,同时建议使用链接池等技术手段确保业务具备自动重连机制。
主备实例操作列表
您可以根据业务需要创建备实例,并可对主备实例分别进行以下操作:
实例类型 | 操作 |
主实例 | 可以为主实例创建一个或多个备实例,详情参见 创建备实例。 |
备实例 | 主实例的租户同步到备实例之后,需要手动为备实例的租户添加主地址,详情参见 添加备实例租户主地址。 |
在主备容灾场景,可以将备实例切换为主实例,保障数据的一致性和业务的可用性,详情参见 切换为主实例。 | |
在业务拆分等场景,可以将备实例从主备实例场景变更为两个独立的集群实例,提搞资源利用率,详情参见 解耦备实例。 |