Skip to content

Oracle GoldenGate 架构

GoldenGate 的核心组件

1. Manager 进程

  • 功能:管理 GoldenGate 实例的所有进程
  • 职责
    • 启动、监控和停止其他 GoldenGate 进程
    • 维护 GoldenGate 日志
    • 报告错误和事件
    • 管理端口和网络连接
  • 配置文件GLOBALSmanager.prm

2. Extract 进程

  • 功能:从源数据库捕获变更数据
  • 类型
    • 初始 Extract:用于初始数据加载
    • 变更 Extract:用于捕获实时变更数据
  • 职责
    • 读取源数据库的重做日志或归档日志
    • 解析日志,提取变更数据
    • 生成 trail 文件
    • 维护检查点,确保数据一致性
  • 配置文件extract.prm

3. Data Pump 进程

  • 功能:可选进程,用于在源端传输 trail 文件
  • 职责
    • 读取本地 trail 文件
    • 通过网络传输到目标端
    • 减少 Extract 进程的网络开销
    • 提高复制的可靠性
  • 配置文件dpump.prm

4. Replicat 进程

  • 功能:在目标数据库应用变更数据
  • 类型
    • 初始 Replicat:用于初始数据加载
    • 变更 Replicat:用于应用实时变更数据
  • 职责
    • 读取目标端的 trail 文件
    • 解析 trail 文件中的变更数据
    • 在目标数据库应用变更
    • 维护检查点,确保数据一致性
  • 配置文件replicat.prm

5. Trail 文件

  • 功能:存储捕获的变更数据
  • 位置
    • 本地 trail:存储在源端
    • 远程 trail:存储在目标端
  • 特点
    • 二进制格式,压缩存储
    • 顺序写入,提高性能
    • 可配置的文件大小和数量
    • 支持加密,提高安全性

6. Checkpoint 文件

  • 功能:记录进程的执行位置
  • 作用
    • 确保数据一致性
    • 支持故障恢复
    • 减少重复处理
  • 位置:存储在 GoldenGate 安装目录中

7. 其他组件

  • GGSCI:GoldenGate 命令行界面,用于管理 GoldenGate 进程
  • DEFGEN:生成数据定义文件,用于异构环境的数据类型映射
  • LOGDUMP:查看 trail 文件内容的工具
  • SERIAL_REP:串行化工具,用于处理并发冲突

GoldenGate 的工作原理

1. 数据捕获流程

  1. Extract 进程启动:读取配置文件,初始化进程

  2. 日志读取:Extract 进程读取源数据库的重做日志或归档日志

  3. 数据解析:解析日志中的变更数据,识别 DML 和 DDL 操作

  4. 数据过滤和转换:根据配置文件中的规则进行数据过滤和转换

  5. Trail 文件生成:将捕获的数据写入本地 trail 文件

  6. 检查点更新:定期更新检查点,记录当前处理位置

2. 数据传输流程

  1. Data Pump 进程启动:读取配置文件,初始化进程

  2. Trail 文件读取:Data Pump 进程读取本地 trail 文件

  3. 网络传输:通过 TCP/IP 网络将数据传输到目标端

  4. 远程 Trail 文件写入:将数据写入目标端的远程 trail 文件

3. 数据应用流程

  1. Replicat 进程启动:读取配置文件,初始化进程

  2. Trail 文件读取:Replicat 进程读取远程 trail 文件

  3. 数据解析:解析 trail 文件中的变更数据

  4. 数据转换:根据配置文件中的规则进行数据转换

  5. 数据应用:在目标数据库执行相应的 DML 或 DDL 操作

  6. 检查点更新:定期更新检查点,记录当前处理位置

GoldenGate 的部署模式

1. 单向复制

  • 架构:从源数据库到目标数据库的单向数据复制
  • 适用场景
    • 灾备系统
    • 数据仓库加载
    • 报表系统
  • 特点
    • 简单易部署
    • 维护成本低
    • 支持实时复制

2. 双向复制

  • 架构:两个数据库之间的双向数据复制
  • 适用场景
    • 双活数据中心
    • 负载均衡
    • 高可用性
  • 特点
    • 支持数据双向流动
    • 需要处理冲突
    • 配置复杂

3. 级联复制

  • 架构:通过中间节点进行多跳复制
  • 适用场景
    • 跨地域数据同步
    • 多层数据架构
    • 数据分发
  • 特点
    • 减少源数据库负载
    • 提高复制可靠性
    • 支持复杂拓扑

4. 扇入复制

  • 架构:多个源数据库复制到一个目标数据库
  • 适用场景
    • 数据汇总
    • 数据仓库
    • 集中式报表
  • 特点
    • 支持数据汇总
    • 需要处理数据冲突
    • 可扩展性好

5. 扇出复制

  • 架构:一个源数据库复制到多个目标数据库
  • 适用场景
    • 数据分发
    • 多环境部署
    • 测试环境同步
  • 特点
    • 支持数据分发
    • 减少源数据库负载
    • 提高系统可靠性

GoldenGate 的配置文件

1. GLOBALS 文件

  • 位置:GoldenGate 安装目录
  • 功能:定义全局参数,适用于所有 GoldenGate 进程
  • 示例
    GGSCHEMA ggadmin
    CHECKPOINTTABLE ggadmin.checkpoint

2. Manager 配置文件

  • 文件名manager.prm
  • 位置dirprm 目录
  • 示例
    PORT 7809
    DYNAMICPORTLIST 7810-7820
    AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
    AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
    PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

3. Extract 配置文件

  • 文件名extract.prm
  • 位置dirprm 目录
  • 示例
    EXTRACT ext1
    USERIDALIAS ggsource
    EXTTRAIL ./dirdat/et
    TABLE hr.employees;
    TABLE hr.departments;

4. Data Pump 配置文件

  • 文件名dpump.prm
  • 位置dirprm 目录
  • 示例
    EXTRACT dpump1
    USERIDALIAS ggsource
    RMTHOST target_server, MGRPORT 7809
    RMTTRAIL ./dirdat/rt
    PASSTHRU
    TABLE hr.employees;
    TABLE hr.departments;

5. Replicat 配置文件

  • 文件名replicat.prm
  • 位置dirprm 目录
  • 示例
    REPLICAT rep1
    USERIDALIAS ggtarget
    ASSUMETARGETDEFS
    MAP hr.employees, TARGET hr.employees;
    MAP hr.departments, TARGET hr.departments;

GoldenGate 的安装与配置

1. 系统要求

  • 操作系统:Linux、Windows、AIX、Solaris 等
  • CPU:至少 2 核处理器
  • 内存:至少 4 GB RAM
  • 磁盘空间:至少 10 GB 可用空间
  • 网络:TCP/IP 网络连接
  • 数据库:支持的源和目标数据库版本

2. 安装步骤

  1. 下载 GoldenGate:从 Oracle 官方网站下载 GoldenGate 安装包

  2. 解压安装包

    bash
    unzip fbo_ggs_Linux_x64_shiphome.zip
  3. 运行安装程序

    bash
    ./runInstaller
  4. 按照向导提示进行安装

    • 选择安装目录
    • 选择数据库类型
    • 完成安装
  5. 配置环境变量

    bash
    export GG_HOME=/u01/app/goldengate
    export PATH=$GG_HOME:$PATH

3. 初始配置

  1. 创建 GoldenGate 子目录

    bash
    ./ggsci
    GGSCI> CREATE SUBDIRS
  2. 配置 GLOBALS 文件

    bash
    GGSCI> EDIT PARAMS GLOBALS
  3. 启动 Manager 进程

    bash
    GGSCI> START MANAGER
  4. 配置 Extract 进程

    bash
    GGSCI> ADD EXTRACT ext1, TRANLOG, BEGIN NOW
    GGSCI> ADD EXTTRAIL ./dirdat/et, EXTRACT ext1
    GGSCI> EDIT PARAMS ext1
  5. 配置 Data Pump 进程

    bash
    GGSCI> ADD EXTRACT dpump1, EXTTRAILSOURCE ./dirdat/et
    GGSCI> ADD RMTTRAIL ./dirdat/rt, EXTRACT dpump1, MGRPORT 7809
    GGSCI> EDIT PARAMS dpump1
  6. 配置 Replicat 进程

    bash
    GGSCI> ADD REPLICAT rep1, EXTTRAIL ./dirdat/rt, CHECKPOINTTABLE ggadmin.checkpoint
    GGSCI> EDIT PARAMS rep1
  7. 启动所有进程

    bash
    GGSCI> START EXTRACT ext1
    GGSCI> START EXTRACT dpump1
    GGSCI> START REPLICAT rep1

GoldenGate 的监控与管理

1. 命令行监控

  • 查看进程状态

    bash
    GGSCI> INFO ALL
  • 查看详细进程信息

    bash
    GGSCI> INFO EXTRACT ext1, DETAIL
  • 查看 trail 文件

    bash
    GGSCI> INFO EXTTRAIL ./dirdat/et
  • 查看检查点

    bash
    GGSCI> INFO CHECKPOINTTABLE

2. 日志监控

  • 查看 GoldenGate 日志

    bash
    GGSCI> VIEW GGSEVT
  • 查看进程日志

    bash
    GGSCI> VIEW REPORT ext1

3. 性能监控

  • 查看 Extract 性能

    bash
    GGSCI> STATS EXTRACT ext1
  • 查看 Replicat 性能

    bash
    GGSCI> STATS REPLICAT rep1

4. 常见管理操作

  • 停止进程

    bash
    GGSCI> STOP EXTRACT ext1
  • 启动进程

    bash
    GGSCI> START EXTRACT ext1
  • 重启进程

    bash
    GGSCI> RESTART EXTRACT ext1
  • 编辑配置文件

    bash
    GGSCI> EDIT PARAMS ext1
  • 查看配置文件

    bash
    GGSCI> VIEW PARAMS ext1

GoldenGate 的最佳实践

1. 架构设计

  • 使用 Data Pump 进程:减少 Extract 进程的网络开销
  • 配置适当的 trail 文件大小:平衡性能和管理开销
  • 使用检查点表:提高数据一致性和故障恢复能力
  • 配置自动重启:提高系统可用性

2. 性能优化

  • 调整 Extract 进程参数

    • TRANLOGOPTIONS EXCLUDEUSER:排除不需要的用户
    • FETCHOPTIONS:优化数据获取
    • NUMFILES:增加文件句柄数量
  • 调整 Replicat 进程参数

    • PARALLELISM:启用并行应用
    • BATCHSQL:启用批量 SQL 执行
    • MAP 语句优化:减少数据转换开销
  • 网络优化

    • 使用压缩:RMTHOST ..., COMPRESS
    • 调整网络缓冲区:TCPBUFSIZETCPFLUSHBYTES

3. 高可用性

  • 配置 Manager 进程自动重启

    AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
    AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
  • 使用 Oracle Clusterware:配置 GoldenGate 作为集群资源

  • 配置监控和告警:使用 OEM 或第三方监控工具

4. 安全管理

  • 使用加密

    • trail 文件加密:ENCRYPTTRAIL
    • 网络传输加密:RMTHOST ..., ENCRYPT
  • 使用用户别名:避免在配置文件中明文存储密码

  • 限制 GoldenGate 目录权限:只允许授权用户访问

  • 定期审计:检查 GoldenGate 配置和日志

GoldenGate 的常见问题和解决方案

问题 1:Extract 进程无法启动

原因

  • 数据库连接问题
  • 日志访问权限不足
  • 配置文件错误

解决方案

  • 检查数据库连接:GGSCI> DBBROWSE
  • 检查日志访问权限:确保 GoldenGate 用户有访问重做日志的权限
  • 检查配置文件:GGSCI> VIEW PARAMS ext1
  • 查看进程日志:GGSCI> VIEW REPORT ext1

问题 2:Replicat 进程应用延迟

原因

  • 目标数据库性能问题
  • Replicat 进程参数配置不当
  • 网络延迟

解决方案

  • 优化目标数据库性能
  • 调整 Replicat 进程参数:启用并行应用和批量 SQL
  • 检查网络连接:使用 pingtraceroute 测试网络

问题 3:数据冲突

原因

  • 双向复制中的并发更新
  • 目标数据库上的手动修改
  • 复制延迟导致的冲突

解决方案

  • 使用冲突检测和解决(CDR)
  • 配置适当的冲突解决策略
  • 避免在目标数据库上进行手动修改
  • 监控复制延迟,及时处理异常

问题 4:Trail 文件增长过快

原因

  • 源数据库变更量大
  • Extract 进程无法及时处理
  • 配置文件中的 PURGEOLDEXTRACTS 设置不当

解决方案

  • 调整 PURGEOLDEXTRACTS 参数:设置合理的保留时间
  • 增加 Extract 进程的并行度
  • 监控 trail 文件大小和数量
  • 定期清理旧的 trail 文件

常见问题(FAQ)

Q1: GoldenGate 和 Data Guard 有什么区别?

A1: GoldenGate 和 Data Guard 的主要区别:

  • 复制原理:GoldenGate 基于日志解析,Data Guard 基于重做日志传输
  • 异构支持:GoldenGate 支持异构环境,Data Guard 只支持 Oracle 数据库
  • 性能影响:GoldenGate 对源数据库性能影响小,Data Guard 影响相对较大
  • 功能:GoldenGate 支持数据过滤、转换和映射,Data Guard 主要提供灾难恢复
  • 拓扑:GoldenGate 支持更灵活的复制拓扑,Data Guard 主要支持主备架构

Q2: GoldenGate 支持哪些数据库?

A2: GoldenGate 支持多种数据库,包括:

  • Oracle Database
  • MySQL
  • SQL Server
  • PostgreSQL
  • IBM Db2
  • Informix
  • Teradata
  • Sybase

Q3: 如何提高 GoldenGate 的复制性能?

A3: 提高 GoldenGate 复制性能的方法:

  • 启用并行处理:在 Extract 和 Replicat 进程中配置并行度
  • 使用批量 SQL:在 Replicat 进程中启用 BATCHSQL
  • 优化网络传输:使用压缩和适当的网络缓冲区设置
  • 调整 trail 文件大小:设置合理的 trail 文件大小
  • 优化数据库性能:确保源和目标数据库性能良好
  • 使用 Data Pump 进程:减少 Extract 进程的网络开销

Q4: 如何监控 GoldenGate 的复制状态?

A4: 监控 GoldenGate 复制状态的方法:

  • 命令行监控:使用 GGSCI 命令查看进程状态和统计信息
  • 日志监控:查看 GoldenGate 日志和进程报告
  • OEM 集成:使用 Oracle Enterprise Manager 监控 GoldenGate
  • 第三方工具:使用第三方监控工具,如 Grafana、Zabbix 等
  • 自定义脚本:编写脚本定期检查复制状态并发送告警

Q5: 如何处理 GoldenGate 的故障?

A5: 处理 GoldenGate 故障的步骤:

  • 识别故障:使用 GGSCI 命令查看进程状态和日志
  • 分析原因:根据错误信息分析故障原因
  • 采取措施:根据故障原因采取相应的解决措施
  • 验证修复:启动进程并验证复制是否正常
  • 文档化:记录故障原因和解决方法,形成知识库

Q6: GoldenGate 如何处理 DDL 语句?

A6: GoldenGate 处理 DDL 语句的方法:

  • 启用 DDL 支持:在 Extract 和 Replicat 进程中配置 DDL 支持
  • DDL 过滤:使用 DDL 过滤规则,只复制需要的 DDL 语句
  • DDL 转换:使用 DDL 转换规则,修改 DDL 语句以适应目标环境
  • 注意事项:DDL 复制可能会影响复制性能,需要谨慎使用