GoldenGate概述
GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。GoldenGate软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制。
GoldenGate工作原理
- 利用抽取进程(Extract)在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作-增、删、改操作,将抽取的信息转换为GoldenGate自定义的中间格式存放在队列文件(trail file)中;
- 利用推送进程(pump)将队列文件(trail file)通过TCP/IP传送到目标系统;
- 目标端利用收集进程(Collector)接收从源端传输过来的数据变化信息,把信息缓存到GoldenGate 队列文件(trail file)中;
- 目标端利用复制进程(replicat)从队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。
GoldenGate应用场景
● 高可用和容灾解决方案
● 实时数据整合解决方案
其中,高可用和容灾解决方案 主要用于消除计划外和计划内停机时间,它包含以下三个子方案:
1. 容灾与应急备份
2. 消除计划内停机
3. 双业务中心(也称:双活)
实时数据整合解决方案 主要为 DSS 或 OLTP 数据库提供实时数据,实现数据集成和整合,它包含以下两个子方案:
1. 数据仓库实时供给
2. 实时报表
GoldenGate组成
- Manager(管理进程)
- Extract(抽取进程)
- Data pump(推送进程)
- Trails(队列文件)
- Collector(收集进程)
- Replicat(复制进程)
以下是对各种进程的详细说明:
- Manager
Manager进程是Golden Gate中进程的控制进程,用于管理 Extract(抽取进程),Data Pump(推送进程),Replicat(复制进程)等进程,在 Extract、Data Pump、Replicat 进程启动之前,Manager 进程必须先要在源端和目标端启动,在整个 Golden Gate 运行期间,它必须保持运行状态,其作用:
- 监控与启动 GoldenGate 的其它进程;
- 管理 trail 文件及 Reporting;
注意:在 Windows 系统上,Manager 进程是作为一个服务来启动的,在 Unix 系统下是一个进程。
- Extract
Extract 进程运行在数据库源端上,它是Golden Gate的捕获机制,可以配置Extract 进程来做如下工作:
- 初始数据装载:对于初始数据装载,Extract 进程直接从源对象中提取数据
- 同步变化捕获:保持源数据与其它数据集的同步。初始数据同步完成后,Extract 进程捕获源数据的变化;如DML变化、 DDL变化等
- Replicat
Replicat 进程是运行在目标端系统的一个进程,负责读取 Extract 进程提取到的数据(变更的事务或 DDL 变化)并应用到目标数据库,就像 Extract 进程一样,也可以配置 Replicat 进程来完成如下工作:
- 初始化数据装载:对于初始化数据装载,Replicat 进程应用数据到目标对象或者路由它们到一个高速的 Bulk-load 工具上;
- 数据同步,将 Extract 进程捕获到的提交了的事务应用到目标数据库中;
- Collector
Collector 是运行在目标端的一个后台进程,接收从 TCP/IP 网络传输过来的数据库变化,并写到 Trail 文件里;
- 动态 collector:由管理进程自动启动的 collector 叫做动态 collector,用户不能与动态 collector 交互;
- 静态 collector:可以配置成手工运行 collector,这个 collector 就称之为静态 collector;
- Trails
为了持续地提取与复制数据库变化,GoldenGate 将捕获到的数据变化临时存放在磁盘上的一系列文件中,这些文件就叫做 Trail 文件。
- 这些文件可以在 source DB 上也可以在目标 DB 上,也可以在中间系统上,这依赖于选择哪种配置情况;
- 在数据库源端上的叫做 Local Trail 或者 Extract Trail;
- 在目标端的叫做 Remote Trail;
- Data Pumps
Data Pump 是一个配置在源端的辅助的 Extract 机制,Data Pump 是一个可选组件,如果不配置 Data Pump,那么由 Extract 主进程将数据发送到目标端的 Remote Trail 文件中;如果配置了 Data Pump,会由 Data Pump将Extract 主进程写好的本地 Trail 文件通过网络发送到目标端的 Remote Trail 文件中。
使用 Data Pump 的好处是:
- 如果目标端或者网络失败,源端的 Extract 进程不会意外终止
- 需要在不同的阶段实现数据的过滤或者转换
- 多个源数据库复制到数据中心
- 数据需要复制到多个目标数据库