OceanBase高可用架构之物理备库

OceanBase备库是基于日志异步复制的物理备库解决方案。该方案类似于传统数据库的主备复制解决方案。两个或多个集群之间,允许以租户为粒度,通过异步复制Redo日志来构建租户级别的主备关系,提供计划内无损切换和故障时有损切换两种容灾能力。

⭐️ 容灾能力:

  • 无损切换:在执行计划内无损切换时,主租户和备租户互换角色,不丢数据(RPO=0),切换时间为秒级(RTO为秒级)。
  • 有损切换:当主租户所在的集群出现故障后,可以执行有损切换,将备租户切换为主租户。此时不能保证不丢数据,RPO大于0,切换时间为秒级(RTO为秒级)。

⭐️ 架构变化:

  • 在OceanBase数据库V4.2.0版本中,物理备库采用独立的主备库架构,主备关系存在于租户级别。不同于以前版本的集中式架构(集群级主备),独立主备库架构下,各个集群是是相互独立的,用户可以更加灵活地管理集群。
  • OceanBase数据库物理租户级主备仅提供异步同步模式,即仅支持最大性能模式,不支持最大保护和最大可用模式。
  • 主备租户的租户名称不要求相同,租户的资源规格、配置、Locality等也不要求相同。
  • 日志传输服务提供了两种不同的使用模式,这两种使用模式快定了物理备库的两种不同的部署方案:基于日志归档的物理备库和基于网络的物理备库。
  • 主备租户副本解耦,主备之间各自运行独立,不再强制需要直连维护成员关系。

⭐️ 方案收益:

  • 主备同步基础设施需求更加灵活,可以通过网络直连或共享盘日志归档进行同步。
  • 主备库基于日志的消费系统同步数据,由于单机日志流引入,不再关注分区,日志流位点推进更加轻量,RPO和RTO改善。
  • 主备库架构复杂度简化,支持独立运维,更加稳定可靠。
  • 3.x版本的主备库副本间为了保持活性,需要周期性发送心跳(keepalive),分区数量变大后,CPU、网络资源容易成为瓶颈。4.x版本中主备库之间带宽等资源需求更加轻量。
  • 日志同步方式由乱序同步改成顺序同步,switchover和failover切换耗时秒级。

主备库核心组件

  1. 日志传输服务(Log Transport Service)
  • 物理备库通过日志传输服务在主租户和备租户之间实时同步Redo日志。特别的,主租户不会主动给备租户推送日志,仅依赖备租户从主租户拉取(Pull)日志。
  • 日志传输服务会自动寻址日志位置信息、处理日志落后场景、处理主租户所在集群节点故障等高可用问题。备租户既可以通过主租户的日志归档服务获取日志,也可以通过网络直连主租户所在集群获取日志。
  1. 日志存储服务(Log Storage Service)
  • 日志存储服务为物理备库提供高可用、高可靠的日志存储和读写能力。日志存储服务既可以是单副本,也可以是多副本并使用Paxos协议实现高可用。
  • 主租户和备租户的日志存储服务使用两种截然不同的工作模式,在主租户下提供Append模式,即接收事务、DDL等上层模块写入的数据;在备租户下提供Raw Write模式,仅允许写入通过日志传输服务从其他租户或日志归档获取的日志。
  1. 日志回放服务(Log Replay Service)
  • 备租户写入日志存储服务的日志会通过日志回放服务实时或延后的应用到内存的Memstore之中,从而保证主租户和备租户的数据完全一致。

主备库日志传输服务

  1. 基于日志归档的物理备库
  • 基于日志归档的物理备库中,物理备库的Redo日志来源于主租户或其他备租户的日志归档,类似于Oracle数据库的Far Sync,备租户仅与日志归档交互,而不会和上游的主租户或备租户有任何其他形式的交互。
  • 在该部署模式下,备租户与上游租户不需要网络联通,但其同步性能和可用性会受到日志归档介质的影响。
  1. 基于网络的物理备库
  • 基于网络的物理备库中,备租户直接通过网络连接主租户或其他备租户读取日志,类似于MySQL数据库的Replication。
  • 在该部署模式下,备租户和主租户的网络需要联通。备租户会通过网络发送RPC请求读取主租户集群中的Redo日志。
  • 备租户从主租户读取的日志,既可以是主租户的在线日志,也可以是主租户的归档日志(主租户开启了日志归档模式的前提下),两种日志来源支持自动切换,对备租户以及业务的使用者透明。

⚠️ 注意事项:

  • OB主备租户可以位于同一集群或者不同集群
  • 同一套主备关系仅支持使用相同的同步方式。也就是说,如果是一主多备,要么所有备库都基于日志归档,要么所有备库都基于网络同步。
  • 基于日志归档的部署场景中,目前支持的存储介质有NFS(网络共享文件系统)和OSS对象存储。
  • 目前OB物理备库仅支持异步同步的模式。
功能项基于日志归档的物理备库基于网络的物理备库
是否支持Switchover支持支持
是否支持Failover支持支持
是否支持一个主库对接多个备库支持支持
是否支持级联备库支持支持
是否为异步同步
是否支持最大可用或最大保护模式不支持不支持
是否支持备库限速不支持支持,集群级限速
备库的数据源归档日志主库的在线日志或归档日志,支持自动切换
是否要求主库开启归档模式要求(否则无法创建备租户)不要求(但建议主库开启归档)
是否要求备库开启归档模式要求(否则无法执行Switchover)不要求(但建议备库开启归档)
实时性秒级 ~ 分钟级秒级
日志归档支持的存储介质OSS/NFS不涉及

主备库部署场景

  1. 同城/异地双机房物理备库
  • 最典型的部署模式,用户可以使用物理备库功能完成异地容灾等各种所需的需求。通过OCP等管理工具实现集群级别所有租户的主备角色切换。
  • 如果同城只有双机房,希望达到机房级容灾能力,或者异地双机房,希望地域级容灾,可以采用物理备库,每个机房部署一个集群。主机房不可用时,备机房接管业务服务,RPO>0。
  1. 同城/异地双活和容灾
  • 使用场景,业务在两个不同的地域均有读写和异地容灾需求,因此需要在两个地域既有主库又有备库。在使用其他数据库基于主备的方案中,用户需要在两个地域各部署两个(或多个)集群,地域之间的集群互为主备。
  • 4.x版本方案中,仅需要在两个地域各部署一个集群,通过租户级别的主备即可满足业务需求,大大简化数据库集群管理复杂度。

物理备库使用限制

限制项具体描述
同一个主租户支持的最大备租户个数无限制
主租户和备租户是否要求资源同构不要求同构。建议主租户和备租户使用相同的资源规格。
配置项主租户与备租户的配置项相互独立,不会物理同步。如果修改了主租户的配置项,需要评估是否需要修改备租户的相同配置项。
系统变量主租户和备租户的系统变量物理同步,如果在主租户上修改了系统变量,系统会同步修改备租户的相同系统变量。
用户及用户密码仅支持在主租户上创建用户和修改用户密码,更新后信息会同步给备租户。
读写操作备租户支持读操作,不支持写操作。
转储与合并主租户和备租户的转储相对独立。备租户从主租户同步合并信息,不支持独立合并。
Switchover限制要求备租户日志流的所有副本在线。
Failover限制要求备租户日志流的所有副本在线。

创建备库租户的方式

基于网络直连创建备租户+后续基于网络同步

OCP平台 => 租户 => 新建租户 => 备租户 => 主备同步方式(基于网络)

适用于主租户刚刚创建、或者主租户的Redo日志完整的场景(可通过查询视图GV$OB_LOG_STAT确定)。

基于备份恢复功能创建备租户+后续基于网络同步

OCP平台 => 租户 => 新建租户 => 备租户 => 主备同步方式(基于网络)=> 恢复备租户设置 => 独立存储目录 => 备份集存储类型 => 数据/日志备份目录

适用于存在日志归档和数据备份,且主备库网络互通的场景。

基于备份恢复功能创建备租户+后续基于归档日志同步

OCP平台 => 租户 => 新建租户 => 备租户 => 主备同步方式(基于归档)=> 恢复备租户设置 => 独立存储目录 => 备份集存储类型 => 数据/日志备份目录

适用于主库开启了日志归档、做过数据备份且备库可以访问该备份的场景。

主备库日常运维

  • 日常切换Switchover
    • 只支持从主租户发起主备日常切换Switchover。
    • 如果备租户的日志同步延迟大于5000ms,则不允许该备切换为主。
    • 如果备租户未开启日志归档,则不支持主备切换Switchover,需要先为备租户开启归档。
  • 容灾切换Failover
    • 只支持从备租户发起容灾切换Failover,前提是备租户对应的主租户无法正常运行了。
  • 主备解耦
    • 只支持从备租户发起主备解耦,解耦后备租户将作为独立租户存在,不再从原主租户同步数据。
  • 暂停同步
  • 开启同步
  • 升级
    • 建议先升级备租户的OB集群,再升级主租户的OB集群;否则先升主再升备的话,会导致备租户同步会暂时卡住。

References
【1】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003378728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GottdesKrieges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值