外观
Oracle GoldenGate 配置与管理
概述
Oracle GoldenGate是Oracle提供的实时数据复制和集成解决方案,支持异构数据库环境,提供低延迟、高吞吐量的数据复制功能。GoldenGate可以实现实时数据同步、数据迁移、读写分离和灾备等场景。
架构设计
GoldenGate核心组件
GoldenGate由以下核心组件组成:
- Manager进程:GoldenGate的控制中心,负责管理其他进程、监控系统状态和处理告警
- Extract进程:从源数据库捕获数据变更(DML和DDL),生成Trail文件
- Data Pump进程:可选组件,负责将本地Trail文件传输到远程目标系统
- Replicat进程:从Trail文件中读取数据变更,应用到目标数据库
- Trail文件:存储捕获的数据变更,类似于Oracle的Redo日志
- Collector进程:在目标系统上运行,负责接收来自源系统的数据传输
GoldenGate复制模式
GoldenGate支持多种复制模式:
- 单向复制:从源数据库到目标数据库的单向数据复制
- 双向复制:源数据库和目标数据库之间的双向数据复制,支持实时同步
- 级联复制:通过中间系统实现多级数据复制
- 广播复制:从一个源数据库复制到多个目标数据库
- 合并复制:将多个源数据库的数据合并到一个目标数据库
环境准备
系统要求
| 配置项 | 要求 |
|---|---|
| Oracle版本 | 19c或21c |
| GoldenGate版本 | 19c或21c(与Oracle版本兼容) |
| 操作系统 | Linux 64位或Windows 64位 |
| 内存 | 至少8GB(推荐16GB) |
| 磁盘空间 | 至少100GB |
| 网络带宽 | 至少1Gbps(推荐10Gbps) |
初始化配置
- 安装GoldenGate软件
- 配置源数据库和目标数据库的Oracle参数
- 配置源数据库和目标数据库的网络连接
- 在源数据库和目标数据库中创建GoldenGate用户
- 启用源数据库的补充日志和强制日志记录
单向复制配置
源数据库配置
- 创建GoldenGate用户
sql
CREATE USER ggadmin IDENTIFIED BY ggadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggadmin;
GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO ggadmin;
GRANT CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE TO ggadmin;
GRANT CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX TO ggadmin;- 启用补充日志和强制日志记录
sql
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;- 配置GoldenGate Manager进程
bash
ggsci
CREATE SUBDIRS
EDIT PARAMS MGR在Manager参数文件中添加以下内容:
PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7- 创建Extract进程
bash
ggsci
ADD EXTRACT ext1, TRANLOG, BEGIN NOW
ADD EXTTRAIL /u01/app/ogg/dirdat/et, EXTRACT ext1, MEGABYTES 100
EDIT PARAMS ext1在Extract参数文件中添加以下内容:
EXTRACT ext1
USERID ggadmin@source_db, PASSWORD ggadmin
EXTTRAIL /u01/app/ogg/dirdat/et
TABLE hr.employees;
TABLE hr.departments;- 创建Data Pump进程(可选)
bash
ggsci
ADD EXTRACT dp1, EXTTRAILSOURCE /u01/app/ogg/dirdat/et
ADD RMTTRAIL /u01/app/ogg/dirdat/rt, EXTRACT dp1, MEGABYTES 100
EDIT PARAMS dp1在Data Pump参数文件中添加以下内容:
EXTRACT dp1
USERID ggadmin@source_db, PASSWORD ggadmin
RMTHOST target_host, MGRPORT 7809
RMTTRAIL /u01/app/ogg/dirdat/rt
PASSTHRU
TABLE hr.employees;
TABLE hr.departments;目标数据库配置
- 创建GoldenGate用户
sql
CREATE USER ggadmin IDENTIFIED BY ggadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggadmin;
GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO ggadmin;
GRANT CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE TO ggadmin;
GRANT CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX TO ggadmin;
GRANT INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO ggadmin;- 配置GoldenGate Manager进程
bash
ggsci
CREATE SUBDIRS
EDIT PARAMS MGR在Manager参数文件中添加以下内容:
PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7- 创建Checkpoint表
bash
ggsci
DBLOGIN USERID ggadmin@target_db, PASSWORD ggadmin
ADD CHECKPOINTTABLE ggadmin.checkpoint- 创建Replicat进程
bash
ggsci
ADD REPLICAT rep1, EXTTRAIL /u01/app/ogg/dirdat/rt, CHECKPOINTTABLE ggadmin.checkpoint
EDIT PARAMS rep1在Replicat参数文件中添加以下内容:
REPLICAT rep1
USERID ggadmin@target_db, PASSWORD ggadmin
ASSUMETARGETDEFS
DISCARDFILE /u01/app/ogg/dirrpt/rep1.dsc, APPEND, MEGABYTES 100
MAP hr.employees, TARGET hr.employees;
MAP hr.departments, TARGET hr.departments;启动GoldenGate进程
- 启动源数据库进程
bash
ggsci@source
START MGR
START EXTRACT ext1
START EXTRACT dp1- 启动目标数据库进程
bash
ggsci@target
START MGR
START REPLICAT rep1版本差异
Oracle 19c vs 21c GoldenGate差异
| 特性 | Oracle 19c | Oracle 21c |
|---|---|---|
| 自动发现表 | 支持 | 增强自动发现表,支持更多场景 |
| 并行复制 | 支持 | 增强并行复制,提高复制性能 |
| 双向复制 | 支持 | 增强双向复制,减少冲突概率 |
| 云集成 | 基础云集成 | 增强云集成,支持与OCI、AWS、Azure等云平台集成 |
| 自动诊断 | 基础自动诊断 | 增强自动诊断和修复能力 |
| 安全功能 | 基础安全功能 | 增强安全功能,支持数据加密和访问控制 |
| 监控能力 | 基础监控能力 | 增强监控能力,提供更详细的性能指标 |
监控与管理
监控GoldenGate状态
- 查看GoldenGate进程状态
bash
ggsci
INFO ALL
INFO EXTRACT *
INFO REPLICAT *- 查看Extract进程详细信息
bash
ggsci
INFO EXTRACT ext1, DETAIL
STATS EXTRACT ext1- 查看Replicat进程详细信息
bash
ggsci
INFO REPLICAT rep1, DETAIL
STATS REPLICAT rep1- 查看Trail文件信息
bash
ggsci
INFO EXTTRAIL /u01/app/ogg/dirdat/et
INFO RMTTRAIL /u01/app/ogg/dirdat/rt常见管理任务
- 添加新表到复制
bash
ggsci
EDIT PARAMS ext1
# 添加新表到Extract参数文件
TABLE hr.jobs;
EDIT PARAMS dp1
# 添加新表到Data Pump参数文件
TABLE hr.jobs;
EDIT PARAMS rep1
# 添加新表到Replicat参数文件
MAP hr.jobs, TARGET hr.jobs;
# 重新启动进程或刷新参数
ggsci
ALTER EXTRACT ext1, EXTEND TABLE hr.jobs
ALTER EXTRACT dp1, EXTEND TABLE hr.jobs
ALTER REPLICAT rep1, EXTEND MAP hr.jobs, TARGET hr.jobs- 处理复制冲突
查看冲突日志:
bash
cat /u01/app/ogg/dirrpt/rep1.dsc修复冲突数据,然后重新启动Replicat进程:
bash
ggsci
START REPLICAT rep1- 监控复制延迟
bash
ggsci
LAG EXTRACT ext1
LAG REPLICAT rep1最佳实践
性能优化
调整Extract进程参数:
- 增加TRANLOGOPTIONS参数提高日志读取性能
- 调整EXTTRAIL参数大小,减少文件切换
- 使用PARALLEL选项提高并行处理能力
调整Replicat进程参数:
- 使用PARALLEL选项提高并行应用能力
- 调整BATCHSQL参数提高批量处理能力
- 使用MAP参数的COLMAP选项优化列映射
网络优化:
- 使用压缩选项减少网络传输量
- 调整TCP缓冲区大小提高网络吞吐量
- 使用多个Data Pump进程分散网络负载
高可用性
配置Manager进程自动重启:
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3 AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3使用备用Manager进程:
- 配置多个Manager进程,确保高可用性
- 使用虚拟IP地址实现Manager进程的故障转移
定期备份GoldenGate配置:
- 定期备份dirprm、dirchk、dirdef等目录
- 定期备份GoldenGate参数文件和配置
安全管理
使用加密传输:
RMTHOST target_host, MGRPORT 7809, ENCRYPT AES256, KEYNAME mykey使用加密Trail文件:
EXTTRAIL /u01/app/ogg/dirdat/et, ENCRYPT AES256, KEYNAME mykey限制GoldenGate用户权限:
- 遵循最小权限原则,只授予必要的权限
- 定期轮换GoldenGate用户密码
- 使用OS认证或Wallet存储密码
故障处理
常见故障及解决方法
- Extract进程无法启动
症状:GGSMGR日志显示"ERROR OGG-00664: Oracle GoldenGate Capture for Oracle, ext1.prm: Failed to attach to logmining server."
解决方法:
- 检查源数据库是否启用了补充日志和强制日志记录
- 检查GoldenGate用户是否有足够的权限
- 检查源数据库的LOG_MINING_SERVER参数配置
- Replicat进程应用失败
症状:GGSMGR日志显示"ERROR OGG-01003: Oracle GoldenGate Delivery for Oracle, rep1.prm: There is a problem in mapping record to target table HR.EMPLOYEES."
解决方法:
- 检查源表和目标表的结构是否一致
- 检查Replicat参数文件中的MAP配置是否正确
- 查看DISCARDFILE获取详细的错误信息
- 复制延迟过大
症状:LAG命令显示Extract或Replicat进程延迟超过阈值
解决方法:
- 检查源数据库和目标数据库的性能
- 调整Extract和Replicat进程的并行度
- 检查网络带宽和延迟
- 优化源表和目标表的索引结构
常见问题(FAQ)
Q: GoldenGate支持哪些数据库?
A: GoldenGate支持多种数据库,包括Oracle、MySQL、SQL Server、DB2、PostgreSQL等,实现异构数据库环境的数据复制。
Q: GoldenGate和Data Guard有什么区别?
A: Data Guard是Oracle专用的高可用性解决方案,主要用于Oracle数据库的灾难恢复;而GoldenGate是通用的数据复制解决方案,支持异构数据库环境,提供更灵活的数据复制功能。
Q: 如何实现GoldenGate的高可用性?
A: 可以通过以下方式实现GoldenGate的高可用性:
- 配置Manager进程自动重启
- 使用备用Manager进程和虚拟IP地址
- 配置多个Extract和Replicat进程
- 定期备份GoldenGate配置
Q: 如何处理GoldenGate复制冲突?
A: 可以通过以下方式处理复制冲突:
- 使用冲突检测和解决(CDR)功能
- 配置适当的冲突解决规则
- 定期监控和处理冲突日志
- 优化应用设计,减少冲突概率
Q: GoldenGate的复制延迟是多少?
A: GoldenGate的复制延迟通常在毫秒级,具体取决于网络带宽、系统负载和数据量大小。在优化配置的情况下,复制延迟可以控制在1秒以内。
Q: 如何监控GoldenGate的性能?
A: 可以使用以下方式监控GoldenGate的性能:
- 使用GGSCI命令查看进程状态和延迟
- 查看GoldenGate日志文件
- 使用Oracle Enterprise Manager监控GoldenGate
- 配置第三方监控工具(如Prometheus + Grafana)
总结
Oracle GoldenGate是功能强大的数据复制和集成解决方案,支持异构数据库环境,提供低延迟、高吞吐量的数据复制功能。在配置GoldenGate时,需要根据业务需求选择合适的复制模式和配置参数,并定期监控和管理GoldenGate进程,确保其正常运行。Oracle 21c相比19c在GoldenGate方面有显著增强,包括增强的并行复制、双向复制和云集成等功能。
