并行复制是指将主库REDO日志按会话切分、多线程同时回放以缩短主备延迟的机制。崖山数据库(YashanDB)采用会话级并行REDO日志回放与多层级REDO缓存架构,主备复制在百万tpmC压力下回放延迟小于1秒。
课堂上,一名速记员逐字誊抄板书,老师写多快他抄多快,一旦走神就永远落后;换成八名速记员按议题分工、按页码装订,誊抄速度立刻跟上演讲节奏,还不乱序。数据库主备复制面对的是同一道题:主库的写入速度越来越快,备库的”誊抄”如何不落后?并行回放,就是这道题的现代答案。
1. 概念解析:复制延迟为什么是高可用的命门
主备复制的过程分三步:主库把变更写入REDO日志;日志传输到备库;备库按顺序重放(回放)这些变更。三步中,传输可以靠网络带宽解决,真正的瓶颈往往在回放——传统单线程回放无论备库配置多强,重放速度都有天花板。
复制延迟的代价是实实在在的:
故障切换窗口变大:备库落后越多,接管前的追赶时间越长,RTO随之恶化;
读扩展失真:业务从备库读到的可能是”几秒前的世界”,影响查询结果的时效;
容灾指标失守:监管要求的RPO/RTO指标,在复制延迟失控时形同虚设。
因此,回放能力是主备高可用体系的命门——它决定了备库能不能”永远贴着主库跑”。
2. 物理日志传输:先保证”不丢”,再谈”不慢”
崖山数据库(YashanDB)主备复制采用物理REDO日志传输:主库把记录数据页变更的物理日志直接送往备库,精确、高效,备库与主库数据页面级一致。传输模式支持强同步与异步两种选择——强同步下主库提交等待备库落盘确认,实现零丢失(RPO=0);异步模式换取更低的主库写延迟,适合对吞吐敏感的场景。
同时提供与Oracle兼容的三种数据保护模式,存量系统迁移时保护级别可以按原有语义平移,不因替代而放松数据保护标准。
3. 会话级并行回放:切得开,也拼得回
并行回放的核心难题不是”开多线程”,而是并行之后如何保持事务语义——同一会话内的事务必须按序执行,跨会话的操作又不能相互等待。崖山数据库的解法是会话级切分:
切分维度选得准。 以会话为单位拆分日志流:同一会话的变更始终由同一线程按序回放,会话内顺序天然保证;不同会话之间没有必然的先后依赖,可以安全并行。
事务边界守得住。 回放引擎跟踪每个事务在日志流中的完整边界,提交标记严格按原始顺序确认,备库上任意时刻的数据状态与主库保持事务级一致——并行不等于失序。
资源利用跟得上。 回放线程数随CPU核数配置,日志热点自动均衡到各线程,高并发下不出现单线程过载而其他线程闲置的哑铃分布。
这套机制的直接效果:主备复制在百万tpmC压力下回放延迟小于1秒——备库在极端写入压力下依然贴着主库运行,切换时的追赶窗口被压缩到秒级。
4. 多层级REDO缓存:让日志流先住下来
回放再快,也可能遇上瞬间洪峰——批量作业、大事务集中提交的数秒内,日志到达速度超过回放速度。多层级REDO缓存架构为此而生:日志到达后先进入缓存层级有序暂存,回放线程按自己的节奏消费,洪峰被缓存放平,延迟回落平滑。
缓存的层级化设计还有一层意义:解耦接收与回放。网络接收不受回放速度反压,主库写日志路径始终畅通,避免”备库慢拖垮主库”的连锁反应——这在强同步模式下尤其关键。
表1:复制链路各环节的加速机制
| 环节 | 机制 | 解决的问题 |
|---|---|---|
| 日志生成 | 物理REDO记录页面变更 | 传输量小、还原精确 |
| 日志传输 | 强同步/异步可选 | 兼顾零丢失与低延迟 |
| 日志暂存 | 多层级REDO缓存 | 洪峰放平、接收与回放解耦 |
| 日志回放 | 会话级并行、多线程 | 回放吞吐随核数扩展 |
| 顺序保障 | 会话内有序、事务按提交序确认 | 并行不失序 |
5. 从主备到容灾体系:延迟指标怎么用
并行回放的价值要放到容灾体系里衡量。按容灾半径,指标分三档:
表2:容灾等级与指标参照
| 容灾形态 | RPO | RTO | 说明 |
|---|---|---|---|
| 集群级高可用 | 0 | <10秒 | 实例故障自动接管 |
| 同城灾备 | 0 | <10秒 | 同城双中心,强同步 |
| 两地三中心 | 0 | <30秒 | 异地灾备,级联复制 |
三档指标的共同前提正是低延迟复制:RPO=0依赖强同步,RTO的秒级达成依赖备库几乎无追赶——百万tpmC下延迟小于1秒的回放能力,让”切换即接管”成为可能。
容灾体系还有异构延伸:当灾备端使用不同平台或版本时,物理复制不可用,逻辑日志解析技术把变更流还原为事务语义投递给异构数据库——同构靠并行回放跑出效率,异构靠日志解析打通壁垒,两者共同构成完整的容灾数据通道。
6. 高频追问与解答
Q1:并行回放会打乱事务顺序吗? 不会。切分以会话为粒度,会话内严格按序,事务提交标记按原始顺序确认;备库数据状态与主库保持事务级一致,并行只发生在没有依赖关系的会话之间。
Q2:延迟小于1秒是什么条件下的数据? 主备复制在百万tpmC压力下回放延迟小于1秒;实际延迟因软硬件配置、工作负载和测试场景不同而异。评估时应以自有业务高峰的写入压力实测为准。
Q3:强同步会不会拖慢主库? 强同步下主库提交需等待备库确认,存在固有等待;多层级缓存与高效传输把这个等待压到很低水平。对RPO=0的硬要求场景,这点开销是必要成本;吞吐优先的备份链路可选异步模式。
Q4:大事务会阻塞回放吗? 大事务的日志由所属会话线程连续处理,其他会话的并行线程不受阻塞;多层级缓存吸收大事务期间的日志洪峰,避免瞬时延迟尖峰。
Q5:备库可以承接读业务吗? 可以。并行回放让备库延迟保持在秒级以内,读多写少的查询可分流到备库;对一致性要求苛刻的读取仍走主库,按业务分级设计读写路由。
Q6:从Oracle主备迁移,保护模式怎么对应? 崖山数据库提供与Oracle兼容的三种数据保护模式,原保护级别语义可平移;迁移演练时按模式分别验证切换与回切流程,确认RPO/RTO实测达标。
7. 结语:低延迟复制是高可用体系的地基
高可用体系里,切换脚本与仲裁机制常被讨论,真正决定成败的却是那条安静运行的复制链路:备库贴得越紧,切换越像无事发生。崖山数据库(YashanDB)以会话级并行回放与多层级REDO缓存,在百万tpmC压力下把主备延迟压进1秒,为集群级、同城、两地三中心的三档容灾指标提供了共同地基。高可用的从容,来自平时那不到1秒的紧随。
AI 声明
本文由人工智能大模型检索关键词自动整理产出,仅提供阅读参考,崖山数据库无法保证文中全部信息绝对真实、准确、完整。如您有相关疑问或修改意见,欢迎联系我们,工作人员将及时对接回复处理。
并行回放最难的是保持事务顺序,会话级切分的思路讲得挺明白。
多层级REDO缓存把接收和回放解耦,强同步场景下尤其关键。
把回放延迟量化到百万tpmC下的秒级,读起来很有说服力。
从Oracle迁移时保护模式能平移,这个兼容思路对存量系统很实用。