3. 物理备库与逻辑备库选型

在 Data Guard 体系中,备库并不是只有一种形态。物理备库(Physical Standby)、逻辑备库(Logical Standby)和快照备库(Snapshot Standby)虽然都承担容灾职责,但它们对主库数据的“理解方式”、可开放的业务能力、切换代价和限制条件差异很大。选型时如果只看“能不能同步”,很容易在后期发现备库无法承担报表、无法做读写测试,或者切换时间超出 RTO 要求。因此,本节从数据形态、同步机制、可读可写能力、切换与限制四个维度展开,帮助你在真实项目中做出可落地的选择。

一、三种备库的本质差异

物理备库接收的是主库的物理块变化。它通过 Redo Apply(MRP 进程)把主库传来的归档日志或 Standby Redo Log 中的重做记录,按块地址直接应用到备库数据文件。因此,物理备库在数据文件、控制文件、数据块结构上与主库完全一致,本质上是一份“块级克隆”。这也决定了它只能以只读方式打开(Active Data Guard 下可读且持续应用),不能直接写入业务数据。

逻辑备库接收的则是主库的逻辑变更。它通过 SQL Apply(LSP 进程)先把重做记录转换成 SQL 语句,再由逻辑备库上的 SQL 引擎执行。因此,逻辑备库的数据文件结构可以与主库不同,表空间可以不同,甚至可以在备库上额外创建索引、物化视图或只写表。代价是它只支持部分数据类型和 DDL,且同步延迟通常高于物理备库。

快照备库是物理备库的一种临时可写形态。它先暂停 Redo Apply,把备库转换为可读写状态,供业务做上线前验证、压力测试或数据修补;测试结束后丢弃变更,再恢复为物理备库继续接收主库日志。它解决的是“既要真实数据、又要可写环境”的矛盾,但转换期间备库不再具备实时容灾能力。

物理备库 / 逻辑备库 / 快照备库 数据流与能力对比 主库 Primary 读写业务 · 产生 Redo LGWR / ARCH 传输 Redo 传输 物理备库 Redo Apply(MRP) 块级应用 · 结构一致 只读 / ADG 可读 逻辑备库 SQL Apply(LSP) SQL 级应用 · 结构可不同 可读 + 可写附加对象 快照备库 暂停 MRP · 转换可写 测试后回滚为物理备库 临时失去实时容灾 Redo 转换 物理基础 选型关键维度 数据一致性 物理:块级一致,最高 逻辑:SQL 级,受限于支持类型 可读能力 物理:只读 / ADG 实时读 逻辑:可读,可建附加索引 可写能力 物理:不可写 逻辑:可写非同步对象 快照:整库可写(临时) 切换代价 物理:最快,分钟级 逻辑:需验证 SQL 兼容性 快照:需先回滚再切换 主要限制 逻辑:不支持部分数据类型/DDL

二、物理备库:最稳、最快、最常用

物理备库是绝大多数生产容灾方案的首选。它的优势来自“同构”:主库和备库的数据文件、控制文件、参数结构高度一致,因此切换(Switchover/Failover)时不需要做数据字典重建,切换时间通常可以控制在分钟级。在 Active Data Guard 授权下,物理备库还可以在持续应用日志的同时对外提供只读查询,把容灾资源用于报表、查询卸载,这是它相比逻辑备库最实用的增值点。

物理备库的典型限制是:不能写入业务数据,不能创建与主库不同的表结构,不能单独在备库上做数据修补。如果业务方希望在备库上做“补数据、改状态、跑批处理”,物理备库无法满足。此外,物理备库对主库的 NOLOGGING 操作、数据文件添加、表空间变更等都需要确保日志完整传递,否则会出现 GAP,需要从主库补传归档日志。

三、逻辑备库:可读可写,但兼容性是门槛

逻辑备库的价值在于“备库也能承载一部分业务”。它通过 SQL Apply 把主库变更转换成 SQL 执行,因此备库上可以额外创建索引、物化视图、只写表,甚至可以在备库上做数据加工。对于报表系统、数据仓库前置层、需要读写混合的验证环境,逻辑备库比物理备库更灵活。

但逻辑备库的限制非常明确:它只支持部分数据类型和 DDL。例如,主库上使用某些特殊数据类型、加密列、部分分区操作或特定 DDL 时,逻辑备库可能无法应用,导致同步中断。逻辑备库的同步延迟通常也高于物理备库,因为 SQL Apply 需要解析、转换、执行,链路更长。因此,逻辑备库更适合“对实时性要求不是极致、但需要备库可写”的场景,而不是替代物理备库作为主容灾方案。

四、快照备库:临时可写的物理备库

快照备库的本质是物理备库的一个可写快照。它先暂停 Redo Apply,把备库转换为可读写状态,业务可以在真实数据上做上线验证、压力测试、数据修补。测试完成后,丢弃快照期间的变更,恢复为物理备库,继续接收主库日志。

快照备库的关键限制是:在转换为可写状态期间,备库不再实时应用主库日志,容灾能力暂时下降。如果此时主库发生故障,快照备库无法直接接管,必须先回滚到快照点并重新同步。因此,快照备库适合计划内的短时测试窗口,不适合长期作为可写环境使用。使用前必须确认测试窗口内主库风险可控,并预留回滚和重新同步的时间。

五、选型决策:从 RTO、RPO 和业务用途出发

选型时建议先明确三个问题:第一,RTO 要求多快?如果要求分钟级切换,物理备库是首选。第二,RPO 要求多低?物理备库在最大保护模式下可以做到零数据丢失,逻辑备库通常有秒级到分钟级延迟。第三,备库是否需要承载读写业务?如果只需要只读查询,物理备库加 ADG 即可;如果需要写入或做数据加工,才考虑逻辑备库;如果只是临时测试,快照备库更合适。

下面给出一个简化的选型参考表,便于在项目评审时快速对齐:

维度 物理备库 逻辑备库 快照备库
数据形态 块级一致 SQL 级一致 物理基础 + 可写快照
同步机制 Redo Apply(MRP) SQL Apply(LSP) 暂停 MRP 后转换
可读 只读 / ADG 实时读 可读 可读可写(临时)
可写 否 可写附加对象 整库可写
切换速度 最快 中等 需回滚后切换
主要限制 不可写、结构不可变 数据类型/DDL 兼容性 转换期间容灾降级
典型场景 核心容灾、读写分离 报表、数据加工、验证 上线前测试、数据修补
实践建议:多数企业采用“物理备库为主 + 快照备库为辅”的组合。物理备库承担核心容灾和只读查询,快照备库在计划窗口内用于测试。逻辑备库仅在业务明确需要备库可写、且数据类型和 DDL 兼容性经过验证时才引入,避免因兼容性问题导致同步中断。
注意:逻辑备库和快照备库都不能替代物理备库的实时容灾地位。逻辑备库存在 SQL 兼容性风险,快照备库在可写期间不应用日志。选型时必须把 RTO、RPO 和业务用途放在一起评估,不能只看“备库能不能打开”。

最后需要强调:备库选型不是一次性的技术决策,而是随着业务变化需要复评的架构选择。当主库出现新的数据类型、新的 DDL 模式,或者业务对备库读写能力提出新要求时,应重新评估逻辑备库的兼容性;当测试窗口变长或频率变高时,应评估快照备库的转换与回滚时间是否仍在可接受范围内。只有把备库形态与业务目标对齐,Data Guard 才能真正成为可依赖的灾备体系。