2. GoldenGate核心概念与术语

GoldenGate 的工程化能力,建立在一组彼此咬合的核心对象之上:Manager 是进程与资源的调度者,Extract 负责从源端捕获变化,Trail 文件是变化数据的落地载体,Data Pump 负责跨网络投递,Replicat 负责在目标端应用,Checkpoint 则记录“已经处理到哪里”。理解这些对象之间的数据流与状态流,比记住命令本身更重要。

一、进程角色:谁在做什么

Manager 进程是 GoldenGate 的“总控”。它不搬运业务数据,但负责启动、监控、重启其它进程,管理 Trail 文件空间,分配端口,并响应 GGSCI 命令。源端和目标端都必须先启动 Manager,否则 Extract、Replicat 无法被拉起。Manager 还承担动态端口分配与 Trail 清理策略,例如通过 PURGEOLDEXTRACTS 控制过期 Trail 的删除。

Extract 进程运行在源端,有两种典型模式:Classic Extract 直接读取在线日志或归档日志,Integrated Extract 则通过数据库日志挖掘接口(如 Oracle 的 LogMiner 集成模式)获取变化。Extract 的核心任务是把 DML/DDL 变化转换为 GoldenGate 的通用记录格式,并写入本地 Trail。它需要知道“从哪个 SCN 或时间点开始读”,这由 Checkpoint 决定。

Data Pump 本质是一种特殊配置的 Extract 进程,通常命名为 EXT_PUMP 或 PMP。它从本地 Trail 读取数据,通过 TCP/IP 发送到目标端的远程 Trail。引入 Data Pump 的价值在于:源端捕获与网络传输解耦,网络中断时本地 Trail 仍可继续积累,恢复后继续投递,避免 Extract 因网络问题回退或停滞。

Replicat 进程运行在目标端,读取远程 Trail,将记录转换为目标数据库可执行的 SQL 或调用,并按事务顺序应用。Replicat 同样依赖 Checkpoint 判断“从哪条记录继续”,从而保证重启后不重复、不遗漏。

二、Trail 文件:变化数据的载体

Trail 文件是 GoldenGate 自有的顺序文件,记录的是经过格式化的变化数据,而不是原始日志的简单拷贝。它分为本地 Trail(Extract 写入)和远程 Trail(Data Pump 写入目标端)。Trail 文件按序号滚动生成,例如 aa000000、aa000001,每个文件有固定大小上限。工程上需要关注三点:

  • 空间:Trail 所在目录必须有足够磁盘,避免写满导致 Extract 异常。
  • 清理:通过 Manager 的 PURGEOLDEXTRACTS 按保留时长或文件数清理,防止无限增长。
  • 定位:Trail 中的记录带有序列号与 RBA(相对字节地址),Checkpoint 正是以“序列号 + RBA”定位恢复点。

三、Checkpoint:一致性的锚点

Checkpoint 是 GoldenGate 保证“至少一次”与“不丢数据”的关键机制。Extract 的 Checkpoint 记录它已成功写入 Trail 的位置;Replicat 的 Checkpoint 记录它已成功应用到目标库的位置。两者独立维护,因此源端与目标端可以短暂不同步,但重启后都能从各自检查点继续。

Checkpoint 通常存放在 GoldenGate 安装目录的 dirchk 下,例如 EXT1.cpr、REP1.cpr。工程排障时,查看 Checkpoint 的滞后情况(Lag)是判断同步健康度的第一手段。若 Replicat 的 Checkpoint 长时间不推进,说明应用侧存在阻塞、冲突或性能瓶颈。

四、GGSCI 命令体系:工程化操作入口

GGSCI 是 GoldenGate 的命令行交互环境,所有进程管理与状态查看都通过它完成。常用命令可按“进程生命周期”和“状态诊断”两类理解:

GGSCI> START MANAGER
GGSCI> ADD EXTRACT ext1, TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1
GGSCI> ADD EXTRACT pmp1, EXTTRAILSOURCE ./dirdat/lt
GGSCI> ADD RMTTRAIL ./dirdat/rt, EXTRACT pmp1
GGSCI> ADD REPLICAT rep1, EXTTRAIL ./dirdat/rt
GGSCI> START EXTRACT ext1
GGSCI> START REPLICAT rep1
GGSCI> INFO EXTRACT ext1, DETAIL
GGSCI> INFO REPLICAT rep1, DETAIL
GGSCI> STATS EXTRACT ext1
GGSCI> LAG REPLICAT rep1

其中 ADD 定义对象,START/STOP 控制运行,INFO 查看配置与检查点,STATS 查看处理量,LAG 查看延迟。工程化视角下,这些命令不是孤立操作,而是围绕“定义—启动—观察—调整”的闭环。

五、数据流与状态流全景

把上述对象串起来,可以得到一条从源库到目标库的完整链路:源库日志 → Extract → 本地 Trail → Data Pump → 远程 Trail → Replicat → 目标库。与此同时,Manager 管理所有进程,Checkpoint 记录每个环节的处理位置。下图用结构关系表达这一数据流与状态流,帮助建立整体心智模型。

GoldenGate 数据流与状态流全景 源数据库 在线/归档日志 Extract 捕获变化 本地 Trail aa000000… Data Pump 跨网络投递 远程 Trail 目标端落地 Replicat 应用变化 目标数据库 事务应用 Manager 进程/端口/清理 Checkpoint 序列号 + RBA 数据流 管理/控制 检查点状态 源端:Extract → 本地 Trail → Data Pump | 目标端:远程 Trail → Replicat → 目标库

六、工程化视角下的关键判断

从工程落地角度看,这六个概念对应六个必须回答的问题:Manager 是否已启动并配置了 Trail 清理策略?Extract 的起始 SCN 是否正确、是否覆盖了所需历史?本地 Trail 与远程 Trail 的目录空间是否充足?Data Pump 的网络链路是否稳定、是否有重试机制?Replicat 是否存在主键冲突、过滤条件错误或性能瓶颈?Checkpoint 的 Lag 是否在可接受范围内?

在实际项目中,建议先通过 INFO ALL 查看所有进程状态,再用 LAG 和 STATS 判断同步健康度。若 Replicat 的 Lag 持续增长,优先检查目标端是否有长事务、锁等待或索引缺失,而不是盲目重启进程。