本节主要介绍日志传输服务的传输模式及按 Region 级联的传输日志策略。
OceanBase 数据库的日志传输服务负责自动将主集群的 REDO 日志传输到备集群,它提供了以下能力:
主集群向备集群传输 REDO日志
在备集群落后的情况下,自动从主集群拉取 REDO 日志
管理所有备集群的同步参数,支持级联传输日志
传输模式
OceanBase 数据库支持以下两种传输模式,每个备集群均需要独立配置:
强同步模式(SYNC)
该模式下,主集群的 REDO 日志要强同步到目标备集群。一条 REDO 日志要等主集群和
SYNC
模式的备集群都持久化成功后才认为持久化成功。事务的提交时延会增加主备集群的网络延时和备集群持久化日志的时间。最大保护和最大可用模式下,主集群仅支持配置一个
SYNC
模式的备集群。最大性能模式下,该传输模式不生效,您可以配置任意数量的备集群为SYNC
模式。主集群可以将自身配置为
SYNC
模式,只有当自身切换为备集群时才有意义。最大保护模式和最大可用模式下,执行 Switchover 前,需要将主集群配置为SYNC
模式,保证 Switchover 后仍然存在一个SYNC
模式的备集群。异步同步模式(ASYNC)
该模式下,主集群的 REDO 日志会异步同步到目标备集群。事务的提交时延不受目标备集群的影响。
日志传输模式定义了主集群日志是否要强同步给目标备集群,但 OceanBase 数据库支持一主多备,不同的备集群可以配置不同的日志传输模式。不同的保护模式下,日志传输模式也有不同的含义。不同保护模式下不同日志传输模式的备集群的日志同步情况如下表所示。
保护模式 | 强同步模式(SYNC)的备集群 | 异步同步模式(ASYNC)的备集群 |
---|---|---|
最大保护模式 | 主集群会强同步日志给备集群 | 主集群异步同步日志给备集群 |
最大性能模式 | 主集群异步同步日志给备集群 | 主集群异步同步日志给备集群 |
最大可用模式 | 主集群会在强同步日志和异步同步日志之间切换 | 主集群异步同步日志给备集群 |
日志传输和级联策略
OceanBase 数据库是多日志流系统,默认情况下,每个分区一个日志流。主备集群之间以日志流为单位同步日志,不同日志流之间相互独立。
以单个分区的日志流为例,主集群分区的主副本生成日志后,会同步给本集群的多数派版本,并且等待多数派持久化成功。此时,如果没有需要强同步的备集群,则系统立即返回日志持久化成功;如果有需要强同步的备集群,则主集群的主副本会给备集群的主副本发送日志,然后等待备集群的主副本应答成功后才返回日志持久化成功。同时,备集群的主副本收到日志后,会同步给本集群的多数派副本,待本集群的多数派持久化成功后,就会应答主集群的主副本成功。
综上所述,强同步模式下,备集群直接从主集群的主副本同步日志,不能自由选择上游副本。但是对于异步同步的备集群,OceanBase 数据库提供了按 Region 级联的传输日志策略,备集群可以就近选择上游副本,即备集群可以优先选择同 Region 的主集群的副本或者同 Region 的其他备集群副本作为上游副本。
异步同步模式下,OceanBase 数据库提供的按 Region 级联的传输日志策略,能够尽可能地保证跨 Region 部署场景下,仅传输一份日志,降低跨 Region 的网络带宽占用。
下图所示为备集群级联主集群同 Region 的副本的场景,其中:
主集群跨 Region 部署,多数派副本均部署在 Region SH 中,少数派副本部署在 Region HZ,主副本部署在 Region SH 中。
备集群 S1 部署在 Region SH 中,配置为强同步模式,直接由主集群的主副本强同步日志给备集群的主副本。
备集群 S2 部署在 Region HZ 中,配置为异步同步模式,由于主集群在
HZ
有一个副本,备集群会自动级联到主集群在 Region HZ 的副本下;主集群在 Region HZ 的副本从主副本同步日志,备集群的主副本从主集群在 Region HZ 的副本异步同步日志。
下图所示为备集群级联备集群的场景,其中:
备集群 S1 和备集群 S2 都配置为异步同步模式,主集群在 Region HZ 中没有副本,备集群 S1 会跨地域从主集群的主副本异步同步日志。
备集群 S2 由于和备集群 S1 部署在相同的 Region,故会自动选择备集群 S1 作为上游副本,从备集群 S1 的主副本异步同步日志。