外观
Oracle GoldenGate 架构
GoldenGate 的核心组件
1. Manager 进程
- 功能:管理 GoldenGate 实例的所有进程
- 职责:
- 启动、监控和停止其他 GoldenGate 进程
- 维护 GoldenGate 日志
- 报告错误和事件
- 管理端口和网络连接
- 配置文件:
GLOBALS和manager.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. 数据捕获流程
Extract 进程启动:读取配置文件,初始化进程
日志读取:Extract 进程读取源数据库的重做日志或归档日志
数据解析:解析日志中的变更数据,识别 DML 和 DDL 操作
数据过滤和转换:根据配置文件中的规则进行数据过滤和转换
Trail 文件生成:将捕获的数据写入本地 trail 文件
检查点更新:定期更新检查点,记录当前处理位置
2. 数据传输流程
Data Pump 进程启动:读取配置文件,初始化进程
Trail 文件读取:Data Pump 进程读取本地 trail 文件
网络传输:通过 TCP/IP 网络将数据传输到目标端
远程 Trail 文件写入:将数据写入目标端的远程 trail 文件
3. 数据应用流程
Replicat 进程启动:读取配置文件,初始化进程
Trail 文件读取:Replicat 进程读取远程 trail 文件
数据解析:解析 trail 文件中的变更数据
数据转换:根据配置文件中的规则进行数据转换
数据应用:在目标数据库执行相应的 DML 或 DDL 操作
检查点更新:定期更新检查点,记录当前处理位置
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. 安装步骤
下载 GoldenGate:从 Oracle 官方网站下载 GoldenGate 安装包
解压安装包:
bashunzip fbo_ggs_Linux_x64_shiphome.zip运行安装程序:
bash./runInstaller按照向导提示进行安装:
- 选择安装目录
- 选择数据库类型
- 完成安装
配置环境变量:
bashexport GG_HOME=/u01/app/goldengate export PATH=$GG_HOME:$PATH
3. 初始配置
创建 GoldenGate 子目录:
bash./ggsci GGSCI> CREATE SUBDIRS配置 GLOBALS 文件:
bashGGSCI> EDIT PARAMS GLOBALS启动 Manager 进程:
bashGGSCI> START MANAGER配置 Extract 进程:
bashGGSCI> ADD EXTRACT ext1, TRANLOG, BEGIN NOW GGSCI> ADD EXTTRAIL ./dirdat/et, EXTRACT ext1 GGSCI> EDIT PARAMS ext1配置 Data Pump 进程:
bashGGSCI> ADD EXTRACT dpump1, EXTTRAILSOURCE ./dirdat/et GGSCI> ADD RMTTRAIL ./dirdat/rt, EXTRACT dpump1, MGRPORT 7809 GGSCI> EDIT PARAMS dpump1配置 Replicat 进程:
bashGGSCI> ADD REPLICAT rep1, EXTTRAIL ./dirdat/rt, CHECKPOINTTABLE ggadmin.checkpoint GGSCI> EDIT PARAMS rep1启动所有进程:
bashGGSCI> START EXTRACT ext1 GGSCI> START EXTRACT dpump1 GGSCI> START REPLICAT rep1
GoldenGate 的监控与管理
1. 命令行监控
查看进程状态:
bashGGSCI> INFO ALL查看详细进程信息:
bashGGSCI> INFO EXTRACT ext1, DETAIL查看 trail 文件:
bashGGSCI> INFO EXTTRAIL ./dirdat/et查看检查点:
bashGGSCI> INFO CHECKPOINTTABLE
2. 日志监控
查看 GoldenGate 日志:
bashGGSCI> VIEW GGSEVT查看进程日志:
bashGGSCI> VIEW REPORT ext1
3. 性能监控
查看 Extract 性能:
bashGGSCI> STATS EXTRACT ext1查看 Replicat 性能:
bashGGSCI> STATS REPLICAT rep1
4. 常见管理操作
停止进程:
bashGGSCI> STOP EXTRACT ext1启动进程:
bashGGSCI> START EXTRACT ext1重启进程:
bashGGSCI> RESTART EXTRACT ext1编辑配置文件:
bashGGSCI> EDIT PARAMS ext1查看配置文件:
bashGGSCI> VIEW PARAMS ext1
GoldenGate 的最佳实践
1. 架构设计
- 使用 Data Pump 进程:减少 Extract 进程的网络开销
- 配置适当的 trail 文件大小:平衡性能和管理开销
- 使用检查点表:提高数据一致性和故障恢复能力
- 配置自动重启:提高系统可用性
2. 性能优化
调整 Extract 进程参数:
TRANLOGOPTIONS EXCLUDEUSER:排除不需要的用户FETCHOPTIONS:优化数据获取NUMFILES:增加文件句柄数量
调整 Replicat 进程参数:
PARALLELISM:启用并行应用BATCHSQL:启用批量 SQL 执行MAP语句优化:减少数据转换开销
网络优化:
- 使用压缩:
RMTHOST ..., COMPRESS - 调整网络缓冲区:
TCPBUFSIZE和TCPFLUSHBYTES
- 使用压缩:
3. 高可用性
配置 Manager 进程自动重启:
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3 AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3使用 Oracle Clusterware:配置 GoldenGate 作为集群资源
配置监控和告警:使用 OEM 或第三方监控工具
4. 安全管理
使用加密:
- trail 文件加密:
ENCRYPTTRAIL - 网络传输加密:
RMTHOST ..., ENCRYPT
- trail 文件加密:
使用用户别名:避免在配置文件中明文存储密码
限制 GoldenGate 目录权限:只允许授权用户访问
定期审计:检查 GoldenGate 配置和日志
GoldenGate 的常见问题和解决方案
问题 1:Extract 进程无法启动
原因:
- 数据库连接问题
- 日志访问权限不足
- 配置文件错误
解决方案:
- 检查数据库连接:
GGSCI> DBBROWSE - 检查日志访问权限:确保 GoldenGate 用户有访问重做日志的权限
- 检查配置文件:
GGSCI> VIEW PARAMS ext1 - 查看进程日志:
GGSCI> VIEW REPORT ext1
问题 2:Replicat 进程应用延迟
原因:
- 目标数据库性能问题
- Replicat 进程参数配置不当
- 网络延迟
解决方案:
- 优化目标数据库性能
- 调整 Replicat 进程参数:启用并行应用和批量 SQL
- 检查网络连接:使用
ping和traceroute测试网络
问题 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 复制可能会影响复制性能,需要谨慎使用
