目录标题
实时归档(Realtime)和即时归档(Timely)
概述
达梦数据库(DM)将Redo日志传输到备库的时机分为**实时归档(Realtime)和即时归档(Timely)**两种,分别对应两类不同的主备场景:
- 实时归档:把主库产生的 RLOG_PKG(Redo 日志包)在写入联机日志文件之前,通过 MAL 通道立即发送到备库,保证主备几乎同步,支撑实时主备集群与 MPP 主备架构。
- 即时归档:把主库产生的 RLOG_PKG在完成写入联机日志文件后,立刻归档并发送到备库,通常用于读写分离架构,保证读库能够尽快获取日志但不会阻塞主库写入。
下面从定义、流程与应用场景三方面详细对比这两者,以及它们与“实时主备”模式的关系。
1. 定义与触发时机
1.1 实时归档(Realtime)
- 定义:在主库写入联机日志文件(Online Redo Log)之前,先通过 MAL 系统把 RLOG_PKG 发送到备库;备库收到后马上响应主库,再由主库继续写联机日志和后续归档操作。
- 触发时机:
--主库生成Redo→发送给备库→备库ACK→主库写联机日志
。 - 对应模式:对应 DM 的实时主备集群和 MPP 主备架构基础,实现主库与备库几乎零延迟同步。
1.2 即时归档(Timely)
- 定义:在主库完成写入联机日志文件后,立刻将该日志归档到备库,本地归档线程触发并推送 RLOG_PKG 到备库;备库接收后进行本地归档并启动重演,但主库写入不受备库状态影响。
- 触发时机:
主库写联机日志→本地归档线程归档→发送给备库→备库ACK+重演
。 - 应用场景:多用于读写分离集群(读库仅作查询),主库写性能几乎不受影响,同时读库能快速获取日志用于同步。
2. 执行流程对比
flowchart TD
subgraph 实时归档 (Realtime)
A1[生成Redo] --> B1[发送至备库 via MAL]
B1 --> C1[备库ACK]
C1 --> D1[写联机日志]
D1 --> E1[本地归档]
end
subgraph 即时归档 (Timely)
A2[生成Redo] --> B2[写联机日志]
B2 --> C2[本地归档线程触发]
C2 --> D2[发送至备库]
D2 --> E2[备库ACK & 重演]
end
- Realtime:采用“先发后写”策略,数据在写本地文件前就已安全到达备库;
- Timely:采用“先写后发”策略,保证本地写入优先,随后快速将日志推送给备库。
3. 与实时主备(Real-time Standby)模式的关系
-
实时主备(Real-time Standby)是基于 实时归档(Realtime)实现的:
- 主备之间通过 Realtime 归档保持持续同步,确保主库崩溃后,备库拥有最新的未归档日志包即可快速切换并接管,无数据丢失。
- DM 的实时主备集群配置通常在 Primary 模式下启用 Realtime 并指定一个或多个实时备库。
-
即时归档 则可与实时主备并用,例如同时为决策分析或读写分离提供只读节点:
- 实时主备节点通过 Realtime 归档提供高可用、零丢失保障;
- 其他只读副本通过 Timely 归档获取日志,用于查询负载分担。
4. 典型配置示例
-- 切换到 Primary 模式(启用所有归档方式)
ALTER DATABASE PRIMARY;
-- 在 dm.ini 或 arch_ini 中配置
arch_ini=REALTIME:1, TIMELY:1, ASYNC:1
-- (启用实时归档、即时归档和异步归档)
-- 启动实时主备集群时,自动使用 Realtime 归档同步到 Standby
REALTIME=1
:启用实时归档;TIMELY=1
:启用即时归档;ASYNC=1
:启用异步归档。
参考文献
- 同步备库、异步备库,订阅备库|达梦技术社区 (达梦数据库)
- 达梦数据库实时主备集群的同步机制和切换机制|CSDN博客 (CSDN博客)
- 三种保护模式(Maximum Performance/Availability/Protection)|Oracle ADG CSDN博客 (CSDN博客)
- Data Guard的三种保护模式详解|博客园 (博客园)
- Oracle Active Data Guard – 技术白皮书 (Oracle)
- ADG三种模式切换详解|CSDN博客 (CSDN博客)
- 达梦数据库主备部署(同步归档模式)|墨天轮 (墨天轮)
- 等级保护策略与 DM 实时主备集群原理|达梦社区 (达梦数据库)
- DM 异步备库配置与守护进程实践|博文园 (博客园)
- Oracle Data Guard三种保护模式 – Azure 文档 (learn.microsoft.com)