只读副本概述

应用场景

当出现如下场景时,用户可以考虑购买 OceanBase 只读副本以应对业务需要:

  • 场景一:系统面临大规模的读请求,且当前 OceanBase 集群实例中的备副本已无法满足业务日益增长的读负载,导致响应时间延长、影响用户体验。此时,需要额外扩展只读副本资源来分摊读请求,减轻主集群的压力。

  • 场景二:业务场景对于写请求的稳定性要求极高,希望实现彻底的读写分离,读请求的流量不会发送到原集群实例

技术原理

OceanBase 数据库集群实例的只读副本功能通过 OceanBase 数据库内核的只读型副本 来实现,它不作为 Paxos 成员参与日志的投票,而是作为一个观察者实时追赶 Paxos 成员的日志,并在本地回放,在业务对读取数据的一致性要求不高的时候可提供只读服务。关于 Paxos 的更多介绍,可以参考 Paxos 协议

在代理层面,用户创建只读副本访问地址后,通过对代理服务的设置,业务流量将被发送到只读型副本所在机器读取数据。

前提条件

OceanBase 数据库的只读副本功能目前处于邀请测试阶段,仅针对白名单用户开放,如您需要使用此功能,请联系 OceanBase 技术支持。以下是启用只读副本功能所必须满足的条件:

  • OceanBase 数据库版本:V3.2.3、V3.2.4 或 V4.2.1。

  • 商品类型:目前仅集群实例支持只读副本功能,租户实例、Serverless 实例不支持只读副本功能。

  • 系列:当前仅支持标准版(云盘)系列。

计费

计费方式为包年包月或按量付费,计费规则详见 只读副本计费说明

  • 为包年包月或按量付费的集群实例创建只读副本时,只读副本和集群实例的生命周期是一致的。

  • 集群实例到期锁定期间,只读副本也会锁定。

  • 集群实例被超期释放后,只读副本也会被直接释放。

功能特点

  • 流量分摊:通过只读副本访问地址,引导应用程序将读流量分散到只读副本上,降低集群实例负载,尤其是在读取密集型应用场景下。

  • 水平扩展:只读副本和集群实例一样具备规格扩缩容、节点扩缩容的能力,因此用户可以根据业务需求动态调整只读副本,以适应不同时间段内读取请求的变化。

  • 数据一致:只读副本与集群实例的数据保持高度同步,能够确保在任何时刻,只读副本提供的查询结果与集群实例数据是一致的,这一特性使得只读副本适合执行复杂的报表生成、数据分析等 OLAP(在线分析处理)任务,不仅能保证数据的准确性,并且不会干扰到集群实例的事务处理,确保核心业务的稳定性和效率。

功能限制

  • 部署方案限制:对于双机房和多机房部署的集群实例,OceanBase 数据库支持创建只读副本,每增加一个只读副本可以多创建一个代理地址。

  • 可用区只读副本数量限制:单可用区的只读副本节点数量不能超过集群单可用区的节点数。例如,若 集群实例工作台 节点分布 为 2-2-2,则每个可用区可创建的只读副本节点数量不能超过 2。

  • 规格限制:

    1. 一个只读副本内的节点规格必须保持一致,不同只读副本的节点规格可以不一致,只读副本的节点规格不能超过全能型副本的节点规格。

    2. 所有只读副本的节点规格必须小于集群实例单个节点的规格。

    3. 对于只读副本节点规格的选择,若其所属集群实例为 V4.x 版本,则该节点最小规格支持配置为 4 核,若其所属集群实例为 V3.x 版本,则该节点最小规格支持配置为 8 核。

  • 地址个数限制

    1. 双机房部署模式的代理层支持一个主地址,最多可添加一个只读或读写分离地址。

    2. 多机房部署模式的代理层支持一个主地址,最多可添加两个只读或读写分离地址。若需要更多地址,需联系 OceanBase 技术支持人员申请更大规格的代理资源。

    3. 若后续选择购买额外的只读副本,那么每当该集群下新增购买一个只读副本实例时,可创建的访问地址数量相应增加一个。有关只读副本的相关介绍,详见添加只读副本

使用流程

使用 OceanBase 数据库的只读副本功能,您需要先为集群实例创建只读副本,然后为该集群实例下的租户开启只读副本,最后为对应租户添加只读副本访问地址。具体操作步骤可以参考 添加只读副本添加只读副本添加访问地址