更新时间:2026-07-28 GMT+08:00
分享

三种回放模式

Redo Log(本章节统一称Xlog)是用于恢复已确认但未写入数据库的数据,记录数据修改后的值。GaussDB备机通过同步Xlog并进行回放实现主备机数据同步。

图1 流式同步原理
  1. 主机会话线程在数据更新时优先确保Xlog写入磁盘。
  2. walsender线程持续将已落盘的本地Xlog传输至备机的walreceiver进程。
  3. 备机walwriter进程将接收的Xlog写入磁盘,并向主机反馈接收位置、刷盘位置及当前回放位置,主机根据此信息完成多数派同步决策。
  4. 备机回放线程读取本地Xlog并执行回放操作,完成实际数据同步。

串行回放

按主机记录的顺序依次回放Xlog。

并行回放

利用现代CPU多核处理能力,针对回放日志流程中耗时最长的“回放日志流程”分配多个线程,将回放日志任务按照relation粒度分发到多个线程同时处理,显著提升并行度。并行回放原理如下图所示。

图2 并行回放原理
  • 备机通过walreader顺序读取Xlog,根据relation id分发至不同redo worker线程并行处理。
  • 事务提交的Xlog由独立的事务回放线程进行回放。

极致RTO回放

回放优化通过充分利用现代CPU多核处理能力,将回放流程拆解为多级流水线架构,包括独立的事务回放pipeline及多个数据回放pipeline,并按page粒度分发Xlog执行回放。极致RTO回放原理如下图所示。

图3 极致RTO回放原理

相较于并行回放模式,极致RTO回放通过进一步提升并行度并构建多级流水线架构,每条流水线由page manager将Xlog分发至多个page worker并行处理。

相关文档