一、GoldenGate简介

GoldenGate软件是一种基于日志的结构化数据复制软件。它通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟。

Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时复制,从而在可以在应急系统、在线报表、 实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。

二、GoldenGate基本原理

和传统的逻辑复制一样,Oracle GoldenGate实现原理是通过抽取源端的redo log或者archive log,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端数据同步。

Oracle GoldenGate主要组件有:Extract、Data pump、Trails、Collector、Replicat、Manager 等。

下图是一个典型的 Golden Gate 配置逻辑结构图:

Oracle GoldenGate 数据复制过程如下:

  • 利用抽取进程(Extract Process)在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作——增、删、改操作。
  • 将抽取的信息转换为GoldenGate自定义的中间格式存放在队列文件(trail file)中。
  • 再利用传输进程将队列文件(trail file)通过TCP/IP传送到目标系统。
  • 目标端有一个进程叫Server Collector,这个进程接受了从源端传输过来的数据变化信息。
  • 把信息缓存到GoldenGate 队列文件(trail file)当中,等待目标端的复制进程读取数据。
  • GoldenGate 复制进程(replicat process)从队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。

为了更好地理解数据复制的完整过程,下面对 GoldenGate 各组成部分进行详细介绍:

① Data source

当处理事务的变更数据时,Extract 进程可以从数据库(Oracle, DB2, SQL Server, MySQL等)的事务日志中直接获取,或从 GoldenGate VAM中获取。通过 VAM,数据库厂商将提供所需的组件,用于 Extract 进程抽取数据的变更。

② Manager

Manager进程是 GoldenGate 的控制进程,运行在源端和目标端上。在目标端和源端有且只有一个manager进程,其运行状态为 running 或 stopped 。 在 windows 系统上,manager 进程作为一个服务来启动,在Linux/Unix系统上则是一个系统进程。

在 Extract、Data Pump、Replicat 进程启动之前,Manager 进程必须先要在源端和目标端启动,在整个 Golden Gate 运行期间,它必须保持运行状态。

Manager主要作用为:

  • 启动、监控、重启 GoldenGate 的其它进程
  • 管理 trail 文件及 Reporting
  • 报告错误及事件
  • 分配数据存储空间
  • 发布阀值报告等

③ Extract

Extract 进程运行在数据库源端上,它是Golden Gate的捕获机制,负责从源端数据表或者日志中捕获数据,可以配置Extract 进程来做如下工作:

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

Extract进程的状态包括:

  • Stopped(正常停止)
  • Starting(正在启动)
  • Running(正在运行)
  • Abended(Abnomal End的缩写,标示异常结束)

GoldenGate并不是对所有的数据库都支持DDL操作。

Extract 进程会捕获所有已配置的需要同步的对象变化,但只会将已提交的事务发送到远程的 trail 文件用于同步。当事务提交时,所有和该事务相关的日志记录被以事务为单元顺序的记录到 trail 文件中。Extract 进程利用其内在的 checkpoint 机制,周期性的记录其读写的位置,这种机制是为了保证 Extract 进程终止或操作系统宕机,重新启动 Extract 后,GoldenGate 可以恢复到之前的状态,从上一个断点继续往下运行。通过 上面的两个机制,就可以保证数据的完整性了。

多 个 Extract 进程可以同时对不同对象进行操作。例如,可以在一个 Extract 进程抽取并向目标端发生事务数据的同时,利用另一个 Extract 进程抽取的数据做报表。或者,两个 Extract 进程可以利用两个trail文件,同时抽取并并行传输给两个 Replicat 进程以减少数据同步的延时。

在进行初始化转载,或者批量同步数据时, GoldenGate 会生成 Extract 文件来存储数据而不是 trail 文件。默认情况下, 只会生成一个 Extract 文件,但如果出于操作系统对单个文件大小限制或者其他因素的考虑,也可以通过配置生成多个 Extract 文件。Extract文件不记录检查点。

④ Trails

为了持续地提取与复制数据库变化,保证为了更有效、更安全的把数据库事务信息从源端投递到目标端,GoldenGate 将捕获到的数据变化临时存放在磁盘上的一系列文件中,这些文件就叫做 Trail 文件。

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

trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传 。

Trail文件默认为10MB,以两个字符开始加上000000~999999的数字作为文件名。如c:\directory/tr000001.默认情况下存储在GoldenGate的dirdat子目录中。可以为不同应用或者对象创建不同的trail文件。同一时刻,只会有一个extract进程处理一个trail文件。

10.0版本以后的GoldenGate,会在trail文件头部存储包含trail文件信息的记录,而10.0之前的版本不会存储该信息。每个trail文件中的数据记录包含了数据头区域和数据区域。在 数据头区域中包含事务信息,数据区域包含实际抽取的数据 。

进程如何写trail文件?

为了减小系统的 I/O 负载,抽取的数据通过大字节块的方式存储到 trail 文件中。同时为了提高兼容性,存储在 trail 文件中的数据以通用数据模式(一种可以在异构数据库之间进行快速而准确转换的模式)存储。 当然,根据不同应用的需求,数据也可以存储为不同的模式。

默认情况下,Extract 进程以追加的方式写入trail文件。当 Extract 进程异常终止时,trail 文件会被标记为需要恢复。当 Extract 重新启动时会追加 checkpoint 之后的数据追加到该 trail 文件中。在 GoldenGate 10.0之前的版本, Extract 进程采用的是覆盖模式,即当 Extract 进程异常终止时,会将至上次完整写入的事务数据之后的数据覆盖现有 trail 文件中的内容。

checkpoint 用于抽取或复制失败后(如系统宕机、网络故障灯),抽取、复制进程重新定位抽取或者复制的起点。在高级的同步配置中,可以通过配置 checkpoint 另多个 Extract 或者 Replicat 进程读取同个 trail 文件集。

Extract 进程在数据源和 trail 文件中都会标识 checkpoint,Replicat 只会在 trail 文件中标示 checkpoint。

在批处理模式中,Extract 和 Replicat 进程都不会记录 checkpoint 。如果批处理失败,则整改批处理会重新进行。

checkpoint 信息会默认存储在 GoldenGate 的子目录 dirchk 中。在目标端除了 checkpoint 文件外,我们也可以通过配置通过额外 checkpoint table 来存储 Replicat 的 checkpoint 信息。

⑤ Data Pumps

Data Pump 是一个配置在源端的辅助的 Extract 机制,其本质是 Extract 进程的一种特殊形式,是一个可选组件。

如果不配置 Data Pump,那么 Extract 进程在抽取完数据以后,直接投递到目标端,生成Remote Trail 文件。

如果配置了 Data Pump,会由 Data Pump将Extract 主进程写好的本地 Trail 文件通过网络发送到目标端的 Remote Trail 文件中。

其作用主要是:将源端产生的本地 trail 文件,以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。

注意:无论是否使用pump进程,在目标端都会生成trail文件。

pump进程可以在线或者批量配置,它可以进行数据过滤,映射和转换,同时还可以配置为“直通模式”,这样数据被传输到目标端时就可以直接生成所需的格式,无需另外操作。 直通模式提高了data pump的效率,因为生成后的对象不需要继续进行检索。

在大多数情况下,oracle都建议采用data pump,原因如下:

  • 为目标端或网络问题提供保障 :如果只在目标端配置 trail 文件,由于源端会将 Extract 进程抽取的内容不断的保存在内存中,并及时的发送到目标端。当网络或者目标端出现故障时, 由于 Extract 进程无法及时的将数据发送到目标, Extract 进程将耗尽内存然后异常终止。 如果在源端配置了data pump进程,捕获的数据会被转移到硬盘上,预防了 异常终止的情况。当故障修复,源端和目标端恢复连通性时,data pump进程发送源端的trail文件到目标端。
  • 可以支持复杂的数据过滤或者转换: 当使用数据过滤或者转换时,可以先配置一个data pump进程在目标端或者源端进行第一步的转换,利用另一个data pump进程或者 Replicat 组进行第二步的转换。
  • 有效的规划存储资源 :当从多个数据源同步到一个数据中心时,采用data pump的方式,可以在源端保存抽取的数据,目标端保存trail文件,从而节约存储空间。
  • 解决单数据源向多个目标端传输数据的单点故障: 当从一个数据源发送数据到多个目标端时,可以为每个目标端分别配置不同的data pump进程。这样如果某个目标端失效或者网络故障时,其他的目标端不会受到影响可以继续同步数据。

⑥ Collector

Collector 是运行在目标端的一个后台进程,与 Pump进程对应,负责于接收从 TCP/IP 网络传输过来的数据库变化,并写到 Trail 文件里。

这个进程不需要特别的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。

动态 collector:由管理进程自动启动的 collector 叫做动态 collector,用户不能与动态 collector 交互。

静态 collector:可以配置成手工运行 collector,这个 collector 就称之为静态 collector。

⑦ Replicat

Replicat 进程是运行在目标端系统的一个进程,通常我们也把它叫做应用进程,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中。和Extract进程一样,Replicat也有其内部的checkpoint机制,保证重启后可以从上次记录的位置开始恢复而无数据损失的风险。

就像 Extract 进程一样,也可以配置 Replicat 进程来完成如下工作:

  • 初始化数据装载:对于初始化数据装载,Replicat 进程应用数据到目标对象或者路由它们到一个高速的 Bulk-load 工具上。
  • 数据同步:将 Extract 进程捕获到的提交了的事务应用到目标数据库中。

Replicat 进程的状态包括:

  • Stopped(正常停止)
  • Starting(正在启动)
  • Running(正在运行)
  • Abended(Abnomal End的缩写,标示异常结束)

⑧ Groups

我们可以通过为不同的 Extract 和 Replicat 进程进行分组来去区分不同进程之间的作用。

例如,当需要并行的复制不同的数据集时,我们则可以创建两个或者多个复制进程。

进程组中包含进程、进程文件、checkpoint 文件和其他与进程相关的文件。对于 Replicat 进程来说,如果配置了checkpoint table,则不同组的都会包含 checkpoint table。

三、GoldenGate应用架构

Oracle GoldenGate(OGG)可以在多样化和复杂的 IT 架构中实现实时事务更改数据捕获、转换和发送;其中,数据处理与交换以事务为单位,并支持异构平台,例如:DB2,MSSQL等。

Golden Gate 所支持的方案主要有三大类,用于不同的业务需求:

  • 高可用和容灾解决方案
  • 数据库迁移、升级(支持跨版本、异构数据库、零宕机时间、亚秒级恢复)
  • 实时数据整合解决方案

其中,高可用和容灾解决方案 主要用于消除计划外和计划内停机时间,它包含以下三个子方案:
1) 容灾与应急备份
2) 消除计划内停机
3) 双业务中心(也称:双活)

实时数据整合解决方案主要为 DSS 或 OLTP 数据库提供实时数据,实现数据集成和整合,它包含以下两个子方案:
1) 数据仓库实时供给
2) 实时报表

四、常见拓扑结构

GoldenGate TDM的复制模式非常灵活,用户可以根据自己的需求选择特定的复制方式,并根据系统扩展对复制进行扩展。

可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。

  • 单向复制:由一个源数据库复制到一个目的数据库,一般用于高可用性和容灾,为生产机保持一个活动的备份数据库,从而在发生灾难的时候迅速切换,减少数据丢失和系统宕机时间。
  • 双向复制:利用GoldenGate TDM可以实现两个数据库之间数据的双向复制,任何一方的数据变化都会被传递到另一端,可以利用此模式开展双业务中心。
  • 广播复制:由一个数据库向多个数据库复制,利用GoldenGate TDM的数据过滤功能可以实现数据的有选择分发。
  • 集中复制:由多个数据库向一个数据库复制,可以将分布的、跨平台或异构的多个数据库集中到一个数据库。此种模式广泛应用于n+1模式的容灾,通过将多个系统数据库集中到一起,可以充分利用备份中心的设施,大幅减少投资;另外也用于跨平台多系统的数据集成,为这些提供系统提供一个统一视图便于查询和统计数据。
  • 多层复制:由A数据库向B复制,同时又由B向C复制,可以在以上几种模式基础上无限制扩展。

五、支持的环境

源和目标的操作系统和数据库可以进行任意的组合。


参考链接:
https://blog.csdn.net/enmotech/article/details/89324396
https://blog.csdn.net/eraining/article/details/109377905

Oracle GoldenGate(OGG)基础知识整理相关推荐

  1. centos7创建asm磁盘_Oracle ASM 磁盘组基础知识整理(收藏版)

    为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的,前两周里因一套生产环境数据库磁盘不足无法对其进行表空间扩容,需要向存储岗申请存储资源,当存储岗划好资源加完存 ...

  2. HTML5的基础知识整理

    HTML5 概述:HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5的设计目的是为了在移动设备上支持多媒体. 文章目录 HTML5 前言 一.HTMl ...

  3. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

  4. 计算机二级c语基础知识,计算机二级C语基础知识整理.doc

    计算机二级C语基础知识整理 1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程.算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计. ...

  5. Oracle Goldengate OGG 11g与各操作系统及数据库版本的兼容列表

    Oracle Goldengate OGG 11g (11.1.1.0.0)与各操作系统及数据库版本的兼容列表如下,仅供参考: Oracle GoldenGate Certification Matr ...

  6. 使用Aspose.Cells的基础知识整理

    使用Aspose.Cells的基础知识整理 转自 http://www.cnblogs.com/kenblove/archive/2009/01/07/1371104.html 这两天用Aspose. ...

  7. 前端基础知识整理汇总(中)

    前端基础知识整理汇总(中) Call, bind, apply实现 // call Function.prototype.myCall = function (context) {context = ...

  8. 前端基础知识整理汇总(上)

    前端基础知识整理汇总(上) HTML页面的生命周期 HTML页面的生命周期有以下三个重要事件: 1.DOMContentLoaded -- 浏览器已经完全加载了 HTML,DOM 树已经构建完毕,但是 ...

  9. Oracle PL/SQL基础知识

    Oracle PL/SQL基础知识 过程(存储过程) 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out).通过在过程中使用输入参数,可以将数据传递到执行部分 ...

  10. Web前端基础知识整理

    1. 前端基础知识 文件分类 XML(扩展标记语言) 装载有格式的数据信息,用于各个框架和技术的配置文件描述 特点: 扩展名为.xml 内容区分大小写 标签要成对出现,形成容器,只能有一个 标签按正确 ...

最新文章

  1. 高校邦python程序设计基础篇_高校邦Python程序设计基础【实境编程】章节答案
  2. System.getProperty()的用途
  3. STM32 MDK编译后生成的 .map文件深入分析
  4. css禁止鼠标复制文本的属性:user-select
  5. linux tar压缩解压命令的详细解释
  6. 绝对不能错过!计算机视觉入门必备
  7. 结对作业_代码复审= =
  8. [CTO札记]雅虎主页改版使用户停留时间增加20% -
  9. 深入体验java项目开发 pdf,深入体验Java Web项目开发.pdf
  10. 电信网关-天翼网关-GPON-HS8145C设置桥接路由拨号认证
  11. webpack之HTML、css和js代码压缩
  12. 软件测试-面试题(基础+性能)
  13. windows无法连接到某个wifi_Windows无法连接到无线网络的解决办法
  14. bzoj 2144: 跳跳棋
  15. 如何修改Linux字体大小,如何更改字体并调整字体大小?
  16. 异常处理之Validates struts.xml files for syntactic and reference errors.
  17. svm松弛变量与惩罚因子
  18. 【C#懒蛋编程——5分钟经验分享】03使用Description特性标签,简化查找表编写
  19. 英国电信第四财季利润大幅下滑 宣布裁员4000人
  20. 医院就诊系统-C语言

热门文章

  1. 网络里面共享计算机不见了怎么办,怎么找不到共享电脑,小编教你局域网中共享电脑找不到怎么办...
  2. VIM从入门到精通(恢复文件)
  3. 2017-10-22—光电二极管
  4. Spring Enable 是什么?
  5. vs2019多行注释快捷键
  6. LA3871二分最大最小值
  7. Vue2项目引入矢量图报错(显示□)
  8. app直接跳转至微信公众号
  9. bp神经网络预测模型实例,BP神经网络预测模型
  10. 为什么大多数穷人都不敢创业,穷人最缺的是什么?