1. 首页 > GoldenGate教程 > 正文

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

风哥提示:数据分发与跨节点同步是GoldenGate的重要功能,能够满足复杂的业务场景需求。建议在配置过程中,充分考虑网络、性能和数据一致性等因素,确保同步的可靠性和效率。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息