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 记录每个环节的处理位置。下图用结构关系表达这一数据流与状态流,帮助建立整体心智模型。
六、工程化视角下的关键判断
从工程落地角度看,这六个概念对应六个必须回答的问题:Manager 是否已启动并配置了 Trail 清理策略?Extract 的起始 SCN 是否正确、是否覆盖了所需历史?本地 Trail 与远程 Trail 的目录空间是否充足?Data Pump 的网络链路是否稳定、是否有重试机制?Replicat 是否存在主键冲突、过滤条件错误或性能瓶颈?Checkpoint 的 Lag 是否在可接受范围内?
INFO ALL 查看所有进程状态,再用 LAG 和 STATS 判断同步健康度。若 Replicat 的 Lag 持续增长,优先检查目标端是否有长事务、锁等待或索引缺失,而不是盲目重启进程。