OGG(Oracle Golden Gate)软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。

OGG基本架构图如下:

ogg架构 ogg架构图_ogg架构


各组件说明:

1、Manager进程

运行在源端和目标端,是其他进程的控制进程,用于管理 Extract,Data Pump,Replicat等进程。在Extract、Data Pump、Replicat进程启动之前,Manager进程必须先要在源端和目标端启动。

在整个 Golden Gate运行期间,它必须保持运行状态,监控与启动其它进程,以及管理 trail文件和Reporting。在Windows系统上,Manager 进程是作为一个服务来启动的,在 Unix 系统下是一个进程。

2、Extract进程

运行在数据库源端,是Golden Gate的捕获机制。可以配置Extract进程完成如下工作:

1)初始数据装载:对于初始数据装载,Extract 进程直接从源对象中提取数据。
2)同步变化捕获:保持源数据与其它数据集的同步。初始数据同步完成后,Extract 进程捕获源数据的变化,如DML变化、DDL变化等。

3、Data Pump进程

运行在数据库源端,是辅助的Extract机制。它是一个可选组件,如果不配置 Data Pump,那么由Extract主进程将数据发送到目标端的Remote Trail 文件中;如果配置了Data Pump,会由Data Pump将Extract主进程写好的本地Trail 文件通过网络发送到目标端的Remote Trail 文件中。

使用 Data Pump 的好处是:
1)如果目标端或者网络失败,源端的 Extract 进程不会意外终止。
2)需要在不同阶段实现数据的过滤或者转换。
3)多个源数据库复制到数据中心。
4)数据需要复制到多个目标数据库。

4、Collector进程

运行在目标端,接收从 TCP/IP 网络传输过来的数据库变化,并写到目标端Trail 文件里。

1)动态Collector:由管理进程自动启动的Collector叫做动态Collector,用户不能与动态Collector 交互。
2)静态Collector:可以配置成手工运行Collector,这个Collector就称之为静态 Collector。

5、Replicat进程

运行在目标端,负责读取 Extract 进程提取到的数据(变更的事务或 DDL 变化)并应用到目标数据库。就像Extract 进程一样,也可以配置Replicat进程完成如下工作:
1)初始化数据装载:对于初始化数据装载,Replicat进程应用数据到目标对象或者路由它们到一个高速的 Bulk-load 工具上。
2)数据同步:将Extract进程捕获到的提交了的事务应用到目标数据库中。

6、Trail文件

为了持续提取与复制数据库变化,GoldenGate 将捕获到的数据变化临时存放在磁盘上的一系列文件中,这些文件就叫做Trail文件。

这些文件可以在源DB上,也可以在目标DB上,也可以在中间系统上,这依赖于选择哪种配置情况。在数据库源端上的叫做Local Trail或者Extract Trail;在目标端的叫做Remote Trail。

OGG 数据复制过程如下:

1)源端抽取进程Extract在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作——增、删、改操作,将抽取的信息转换为GoldenGate自定义的中间格式存放在源端队列文件(trail file)中。

2)源端传输进程DataPump将源端队列文件(trail file)通过TCP/IP传送到目标端。

3)目标端Collector进程接收从源端传输过来的数据变化信息,把信息缓存到目标端队列文件(trail file)中。

4)目标端复制进程Replicat从目标端队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。

完毕。