3. GoldenGate安装与部署规划
GoldenGate 的安装本身并不复杂,真正决定后续运维是否顺畅的,是安装前的部署规划。很多同步链路后期出现“进程频繁 ABEND”“抽取日志找不到”“切换后无法启动”等问题,根源往往不在参数调优,而在最初没有把软硬件版本、目录结构、环境变量、Manager 进程和多实例高可用关系理清楚。本节围绕这五个方面展开,并给出可直接参考的规划样例。
一、软硬件与版本要求
GoldenGate 对操作系统的要求相对宽松,但对“版本匹配”非常敏感。规划时至少要确认四层匹配关系:源端与目标端数据库版本、GoldenGate 版本、数据库客户端(OCI/Instant Client)版本、操作系统位数与内核版本。以常见的 Oracle 到 Oracle 同步为例,若源库为 19c,目标库为 19c,则 GoldenGate 建议选用 19c 对应版本(如 19.1.0.0.4 及以上),并保证两端 GG 主版本一致,避免因 trail 文件格式差异导致投递失败。
硬件方面,抽取进程(Extract)主要消耗 CPU 和内存,投递进程(Replicat)主要消耗 CPU 与目标库的 I/O。经验上,单条中等压力链路建议至少 4 核 CPU、8 GB 内存,日志量大的场景需按“每日归档量 ÷ 8 小时”估算抽取吞吐。磁盘上,GoldenGate 安装目录约需 1~2 GB,但 trail 文件目录必须预留足够空间:可按“峰值日志量 × 保留小时数 × 1.5”估算,并单独挂载,避免写满根分区。
二、目录结构设计
GoldenGate 的目录规划应遵循“安装目录与运行目录分离、数据目录独立挂载”的原则。推荐结构如下:
/u01/ogg # 软件安装目录(只读,升级时替换)
/u01/ogg/dirprm # 参数文件
/u01/ogg/dirrpt # 报告文件
/u01/ogg/dirtmp # 临时文件
/u02/ogg_trail # trail 文件目录(独立挂载)
/u02/ogg_checkpt # 检查点文件
其中 dirprm、dirrpt、dirtmp 是 GoldenGate 默认使用的子目录,安装后会自动生成。将 trail 与检查点放到独立挂载点,既能防止日志暴涨拖垮系统盘,也便于在多实例场景下按实例划分目录,例如 /u02/ogg_trail/inst1、/u02/ogg_trail/inst2。
三、环境变量配置
GoldenGate 进程依赖正确的环境变量才能找到库和自身组件。核心变量包括:
ORACLE_HOME:Oracle 客户端或数据库软件目录;ORACLE_SID:目标实例名(多实例时按实例切换);LD_LIBRARY_PATH:需包含$ORACLE_HOME/lib与$GG_HOME;GG_HOME:GoldenGate 安装目录;PATH:加入$GG_HOME,便于直接执行ggsci。
建议把上述变量写入独立的 ogg.env 文件,由启动脚本 source 加载,而不是直接写进 .bash_profile。这样在多实例部署时,只需切换 ORACLE_SID 与 trail 路径,即可复用同一套环境模板,减少人为出错。
四、Manager 进程配置
Manager 是 GoldenGate 的“总控进程”,负责启动、监控、报告其他进程,并管理端口与 trail 清理。其参数文件 MGR.prm 典型配置如下:
PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u02/ogg_trail/*, USECHECKPOINTS, MINKEEPHOURS 24
其中 PORT 是 Manager 监听端口,DYNAMICPORTLIST 为抽取/投递进程动态分配通信端口,AUTORESTART 让异常进程自动重试,PURGEOLDEXTRACTS 按检查点安全清理过期 trail。配置完成后用 start mgr 启动,再用 info mgr 确认状态为 RUNNING。
五、多实例部署与高可用规划
当一台主机需要承载多个源库实例时,推荐“一套软件、多套运行目录”的模式:GoldenGate 软件只安装一份,但为每个实例建立独立的 dirprm、dirrpt、trail 目录,并通过不同的 Manager 端口(如 7809、7819)隔离。这样单个实例的进程异常不会影响其他实例,升级时也可逐实例滚动操作。
高可用方面,常见做法是 GoldenGate 与数据库同机部署并纳入集群资源管理,或采用“主备 GG 节点 + 共享 trail 存储”。关键判断依据是:切换后新节点能否读到完整 trail、检查点是否连续、Manager 能否自动拉起进程。建议在规划阶段就明确 RTO/RPO 目标,例如 RTO ≤ 5 分钟、RPO = 0,并据此决定是否使用共享存储或 Data Guard 配合。
把上述五项规划落实到位,后续的抽取、投递配置才有稳定的运行基础,也才能在出现异常时快速定位是环境问题、目录问题还是进程问题。