GoldenGate教程FG008-数据分发机制与跨节点同步
本文档详细介绍Oracle GoldenGate的数据分发机制与跨节点同步,风哥教程参考GoldenGate官方文档相关内容,适合数据库管理员和技术人员学习和参考。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 数据分发概念
数据分发是指将源数据库的数据变更分发到多个目标数据库的过程。GoldenGate通过配置不同的Replicat进程,可以实现数据的多向分发,满足不同业务场景的需求。
- 数据备份:将数据同步到多个备份节点
- 负载均衡:将数据分发到多个节点,分担查询负载
- 数据分析:将数据同步到数据仓库进行分析
- 业务扩展:支持多地区业务扩展
- 高可用性:实现多节点冗余
1.2 跨节点同步原理
跨节点同步是指在不同的服务器节点之间进行数据同步。GoldenGate通过以下方式实现跨节点同步:
## 1. 数据捕获
– Extract进程从源数据库捕获数据变更
– 将变更数据写入本地Trail文件
## 2. 数据传输
– Data Pump进程(可选)将本地Trail文件传输到远程节点
– 或Replicat进程直接读取远程Trail文件
## 3. 数据应用
– Replicat进程从Trail文件读取数据
– 将数据应用到目标数据库
## 4. 数据一致性
– 使用检查点机制确保数据一致性
– 处理冲突和错误
1.3 数据分发方式
GoldenGate支持多种数据分发方式:
- 一对一:一个源数据库同步到一个目标数据库
- 一对多:一个源数据库同步到多个目标数据库
- 多对一:多个源数据库同步到一个目标数据库
- 多对多:多个源数据库同步到多个目标数据库
- 环形同步:多个节点之间形成环形同步
学习交流加群风哥微信: itpux-com
Part02-生产环境规划与建议
2.1 架构设计
数据分发与跨节点同步的架构设计需要考虑以下因素:
## 1. 网络拓扑
– 星型拓扑:一个中心节点分发到多个边缘节点
– 环形拓扑:节点之间形成环形连接
– 网状拓扑:节点之间相互连接
## 2. 数据流向
– 单向:数据从源到目标单向流动
– 双向:数据在节点之间双向流动
– 多向:数据在多个节点之间多向流动
## 3. 节点角色
– 主节点:负责数据生产
– 从节点:负责数据消费
– 转发节点:负责数据中转
## 4. 数据过滤
– 基于表的过滤:只同步特定表
– 基于数据的过滤:只同步特定数据
– 基于操作的过滤:只同步特定操作
## 5. 冲突处理
– 基于时间戳:使用时间戳解决冲突
– 基于优先级:根据节点优先级解决冲突
– 手动处理:人工干预解决冲突
2.2 网络考虑
跨节点同步的网络考虑:
- 网络带宽:确保有足够的网络带宽支持数据传输
- 网络延迟:考虑网络延迟对同步性能的影响
- 网络稳定性:确保网络连接稳定可靠
- 网络安全:配置适当的网络安全措施
- 网络拓扑:选择合适的网络拓扑结构
2.3 高可用性设计
数据分发与跨节点同步的高可用性设计:
## 1. 进程级高可用
– 配置Manager进程自动重启Extract和Replicat进程
– 使用参数AUTORESTART
## 2. 节点级高可用
– 配置多个节点作为备份
– 使用故障转移机制
## 3. 网络级高可用
– 配置多条网络线路
– 使用负载均衡
## 4. 数据级高可用
– 配置数据校验机制
– 定期验证数据一致性
## 5. 监控与告警
– 配置监控系统
– 设置告警机制
from GoldenGate视频:www.itpux.com
Part03-生产环境项目实施方案
3.1 配置步骤
数据分发与跨节点同步的配置步骤:
## 1. 源端配置
– 配置Extract进程捕获数据
– 配置Data Pump进程(可选)传输数据
– 配置Trail文件
## 2. 目标端配置
– 配置Replicat进程应用数据
– 配置Checkpoint表
– 配置错误处理
## 3. 网络配置
– 配置网络连接
– 配置防火墙规则
– 测试网络连通性
## 4. 安全配置
– 配置用户权限
– 配置加密传输
– 配置认证机制
## 5. 监控配置
– 配置监控系统
– 设置告警机制
– 配置日志管理
3.2 数据路由配置
数据路由配置:
## 1. 基本路由配置
– 使用RMTHOST参数指定目标主机
– 使用RMTTRAIL参数指定远程Trail文件
## 2. 条件路由配置
– 使用FILTER参数过滤数据
– 使用MAP参数映射表
– 使用SQLEXEC参数执行SQL语句
## 3. 多目标路由配置
– 为每个目标配置独立的Replicat进程
– 为每个目标配置独立的Trail文件
– 配置不同的过滤条件
## 4. 动态路由配置
– 使用参数DYNAMICRESOLUTION
– 配置动态目标列表
– 实现负载均衡
3.3 监控设置
监控设置:
## 1. 进程监控
– 使用GGSCI命令监控进程状态
– 配置自动告警
– 定期检查进程状态
## 2. 性能监控
– 监控Extract和Replicat进程的延迟
– 监控系统资源使用情况
– 监控网络传输情况
## 3. 数据监控
– 验证数据一致性
– 监控数据同步速率
– 检查错误日志
## 4. 告警设置
– 配置邮件告警
– 配置短信告警
– 配置系统集成告警
## 5. 日志管理
– 配置日志轮转
– 配置日志保留策略
– 定期清理日志
Part04-生产案例与实战讲解
4.1 一对多数据分发案例
以下是一对多数据分发的实战案例:
## 环境信息
源数据库:fgedudb (Oracle 19c)
目标数据库1:fgedudb01 (Oracle 19c)
目标数据库2:fgedudb02 (Oracle 19c)
## 实施步骤
### 1. 源端配置
#### 1.1 配置主Extract进程
GGSCI> add extract EXT1, tranlog, begin now
EXTRACT added.
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/et, extract EXT1, megabytes 100
EXTTRAIL added.
GGSCI> edit param EXT1
EXTRACT EXT1
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/fgdata/dirdat/et
TABLE fgedu.*;
#### 1.2 配置Data Pump进程(目标1)
GGSCI> add extract DP1, exttrailsource /GoldenGate/fgdata/dirdat/et
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt1, extract DP1, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP1
EXTRACT DP1
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu01, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt1
TABLE fgedu.*;
#### 1.3 配置Data Pump进程(目标2)
GGSCI> add extract DP2, exttrailsource /GoldenGate/fgdata/dirdat/et
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt2, extract DP2, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP2
EXTRACT DP2
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu02, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt2
TABLE fgedu.*;
### 2. 目标端1配置
#### 2.1 配置Replicat进程
GGSCI> add replicat REP1, exttrail /GoldenGate/fgdata/dirdat/rt1
REPLICAT added.
GGSCI> edit param REP1
REPLICAT REP1
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 3. 目标端2配置
#### 3.1 配置Replicat进程
GGSCI> add replicat REP2, exttrail /GoldenGate/fgdata/dirdat/rt2
REPLICAT added.
GGSCI> edit param REP2
REPLICAT REP2
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 4. 启动进程
#### 4.1 启动源端进程
GGSCI> start EXT1
GGSCI> start DP1
GGSCI> start DP2
#### 4.2 启动目标端1进程
GGSCI> start REP1
#### 4.3 启动目标端2进程
GGSCI> start REP2
### 5. 验证同步状态
#### 5.1 源端状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:05
EXTRACT RUNNING DP1 00:00:00 00:00:03
EXTRACT RUNNING DP2 00:00:00 00:00:04
#### 5.2 目标端1状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
#### 5.3 目标端2状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP2 00:00:00 00:00:03
4.2 多对一数据汇总案例
以下是多对一数据汇总的实战案例:
## 环境信息
源数据库1:fgedudb01 (Oracle 19c)
源数据库2:fgedudb02 (Oracle 19c)
目标数据库:fgedudb (Oracle 19c)
## 实施步骤
### 1. 源端1配置
#### 1.1 配置Extract进程
GGSCI> add extract EXT1, tranlog, begin now
EXTRACT added.
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/et1, extract EXT1, megabytes 100
EXTTRAIL added.
GGSCI> edit param EXT1
EXTRACT EXT1
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/fgdata/dirdat/et1
TABLE fgedu.*;
#### 1.2 配置Data Pump进程
GGSCI> add extract DP1, exttrailsource /GoldenGate/fgdata/dirdat/et1
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt1, extract DP1, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP1
EXTRACT DP1
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt1
TABLE fgedu.*;
### 2. 源端2配置
#### 2.1 配置Extract进程
GGSCI> add extract EXT2, tranlog, begin now
EXTRACT added.
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/et2, extract EXT2, megabytes 100
EXTTRAIL added.
GGSCI> edit param EXT2
EXTRACT EXT2
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/fgdata/dirdat/et2
TABLE fgedu.*;
#### 2.2 配置Data Pump进程
GGSCI> add extract DP2, exttrailsource /GoldenGate/fgdata/dirdat/et2
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt2, extract DP2, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP2
EXTRACT DP2
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt2
TABLE fgedu.*;
### 3. 目标端配置
#### 3.1 配置Replicat进程(源1)
GGSCI> add replicat REP1, exttrail /GoldenGate/fgdata/dirdat/rt1
REPLICAT added.
GGSCI> edit param REP1
REPLICAT REP1
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
#### 3.2 配置Replicat进程(源2)
GGSCI> add replicat REP2, exttrail /GoldenGate/fgdata/dirdat/rt2
REPLICAT added.
GGSCI> edit param REP2
REPLICAT REP2
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 4. 启动进程
#### 4.1 启动源端1进程
GGSCI> start EXT1
GGSCI> start DP1
#### 4.2 启动源端2进程
GGSCI> start EXT2
GGSCI> start DP2
#### 4.3 启动目标端进程
GGSCI> start REP1
GGSCI> start REP2
### 5. 验证同步状态
#### 5.1 目标端状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
REPLICAT RUNNING REP2 00:00:00 00:00:03
4.3 环形同步案例
以下是环形同步的实战案例:
## 环境信息
节点1:fgedudb01 (Oracle 19c)
节点2:fgedudb02 (Oracle 19c)
节点3:fgedudb03 (Oracle 19c)
## 实施步骤
### 1. 节点1配置
#### 1.1 配置Extract进程(同步到节点2)
GGSCI> add extract EXT1, tranlog, begin now
EXTRACT added.
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/et1, extract EXT1, megabytes 100
EXTTRAIL added.
GGSCI> edit param EXT1
EXTRACT EXT1
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/fgdata/dirdat/et1
TABLE fgedu.*;
#### 1.2 配置Data Pump进程(同步到节点2)
GGSCI> add extract DP1, exttrailsource /GoldenGate/fgdata/dirdat/et1
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt1, extract DP1, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP1
EXTRACT DP1
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu02, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt1
TABLE fgedu.*;
#### 1.3 配置Replicat进程(接收节点3数据)
GGSCI> add replicat REP1, exttrail /GoldenGate/fgdata/dirdat/rt3
REPLICAT added.
GGSCI> edit param REP1
REPLICAT REP1
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 2. 节点2配置
#### 2.1 配置Extract进程(同步到节点3)
GGSCI> add extract EXT2, tranlog, begin now
EXTRACT added.
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/et2, extract EXT2, megabytes 100
EXTTRAIL added.
GGSCI> edit param EXT2
EXTRACT EXT2
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/fgdata/dirdat/et2
TABLE fgedu.*;
#### 2.2 配置Data Pump进程(同步到节点3)
GGSCI> add extract DP2, exttrailsource /GoldenGate/fgdata/dirdat/et2
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt2, extract DP2, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP2
EXTRACT DP2
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu03, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt2
TABLE fgedu.*;
#### 2.3 配置Replicat进程(接收节点1数据)
GGSCI> add replicat REP2, exttrail /GoldenGate/fgdata/dirdat/rt1
REPLICAT added.
GGSCI> edit param REP2
REPLICAT REP2
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 3. 节点3配置
#### 3.1 配置Extract进程(同步到节点1)
GGSCI> add extract EXT3, tranlog, begin now
EXTRACT added.
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/et3, extract EXT3, megabytes 100
EXTTRAIL added.
GGSCI> edit param EXT3
EXTRACT EXT3
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/fgdata/dirdat/et3
TABLE fgedu.*;
#### 3.2 配置Data Pump进程(同步到节点1)
GGSCI> add extract DP3, exttrailsource /GoldenGate/fgdata/dirdat/et3
EXTRACT added.
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/rt3, extract DP3, megabytes 100
RMTTRAIL added.
GGSCI> edit param DP3
EXTRACT DP3
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu01, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/rt3
TABLE fgedu.*;
#### 3.3 配置Replicat进程(接收节点2数据)
GGSCI> add replicat REP3, exttrail /GoldenGate/fgdata/dirdat/rt2
REPLICAT added.
GGSCI> edit param REP3
REPLICAT REP3
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 4. 启动进程
#### 4.1 启动节点1进程
GGSCI> start EXT1
GGSCI> start DP1
GGSCI> start REP1
#### 4.2 启动节点2进程
GGSCI> start EXT2
GGSCI> start DP2
GGSCI> start REP2
#### 4.3 启动节点3进程
GGSCI> start EXT3
GGSCI> start DP3
GGSCI> start REP3
### 5. 验证同步状态
#### 5.1 节点1状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:05
EXTRACT RUNNING DP1 00:00:00 00:00:03
REPLICAT RUNNING REP1 00:00:00 00:00:02
#### 5.2 节点2状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT2 00:00:00 00:00:04
EXTRACT RUNNING DP2 00:00:00 00:00:03
REPLICAT RUNNING REP2 00:00:00 00:00:02
#### 5.3 节点3状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT3 00:00:00 00:00:05
EXTRACT RUNNING DP3 00:00:00 00:00:03
REPLICAT RUNNING REP3 00:00:00 00:00:02
Part05-风哥经验总结与分享
5.1 最佳实践
根据实际经验,总结以下最佳实践:
- 合理规划架构:根据业务需求和数据量选择合适的架构
- 网络优化:确保网络带宽和稳定性,优化网络配置
- 数据过滤:只同步必要的数据,减少网络传输和处理开销
- 监控到位:建立完善的监控体系,及时发现和解决问题
- 错误处理:配置合理的错误处理机制,确保数据一致性
5.2 性能优化
数据分发与跨节点同步的性能优化:
- 并行处理:使用多个Extract和Replicat进程并行处理数据
- 压缩传输:启用数据压缩,减少网络传输量
- 批量应用:配置Replicat进程批量应用数据
- 优化参数:调整GoldenGate参数,提高性能
- 硬件升级:根据需要升级硬件,提高处理能力
5.3 风哥经验分享
在多次数据分发与跨节点同步的经验中,我总结了以下几点心得:
1. 架构设计:根据业务需求和数据量选择合适的架构,避免过度设计或设计不足。
2. 网络配置:网络是跨节点同步的关键,确保网络带宽和稳定性,避免网络成为瓶颈。
3. 数据一致性:在多节点同步中,确保数据一致性是挑战,需要配置合理的冲突处理机制。
4. 监控与告警:建立完善的监控体系,及时发现和解决问题,确保同步的稳定性。
5. 测试验证:在生产环境部署前,在测试环境进行充分的测试,验证方案的可行性。
更多学习教程公众号风哥教程itpux_com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
