Golden Gate - 概念和机制

Oracle Golden Gate - 概念和机制 (ogg)

Golden Gate(简称OGG)提供异构环境下交易数据的实时捕捉、变换、投递。

OGG支持的异构环境有:

GoldenGate能够支持多种拓扑结构,包括一对一,一对多,多对一,层叠和双向复制等等。

wpsBA27.tmp

GoldenGate基本架构

wpsBA28.tmp

 

OGG的特性:

  • 对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制
  • 以交易为单位复制,保证交易一致性:只同步已提交的数据
  • 高性能
    • 智能的交易重组和操作合并
    • 使用数据库本地接口访问
    • 并行处理体系
  • 灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等
  • 支持数据过滤和转换
    • 可以自定义基于表和行的过滤规则.
    • 可以对实时数据执行灵活影射和变换.
  • 提供数据压缩和加密:降低传输所需带宽,提高传输安全性.

OGG的工作原理:

OGG的进程:

  • Manager进程是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。在目标端和源端有且只有一个manager进程
  • Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。Extract的作用可以按照阶段来划分为:
    • 初始时间装载阶段:在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据
    • 同步变化捕获阶段:初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)
  • Data Pump进程运行在数据库源端,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在抽 取完数据以后,直接投递到目标端,生成远程trail文件。
  • Collector进程与Data Pump进程对应 的叫Server Collector进程,这个进程不需要引起我的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。它运行在目标端,其 任务就是把Extract/Pump投递过来的数据重新组装成远程ttrail文件。
  • Replicat进程,通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中。

关于OGG的Trail文件:

    • 为了更有效、更安全的把数据库事务信息从源端投递到目标端。GoldenGate引进trail文件的概念。前面提到extract抽取完数据以 后 Goldengate会将抽取的事务信息转化为一种GoldenGate专有格式的文件。然后pump负责把源端的trail文件投递到目标端,所以源、 目标两端都会存在这种文件。
    • trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传 。

 

Oracle GoldenGate(OGG)可以在多样化和复杂的 IT 架构中实现实时事务更改数据捕获、转换和发送;其中,数据处理与交换以事务为单位,并支持异构平台,例如:DB2,MSSQL等
     
     Golden Gate 所支持的方案主要有两大类,用于不同的业务需求:
     
     ● 高可用和容灾解决方案
     ● 实时数据整合解决方案
     
     其中,高可用和容灾解决方案 主要用于消除计划外和计划内停机时间,它包含以下三个子方案:
     1.  容灾与应急备份
     2.  消除计划内停机

     3.  双业务中心(也称:双活)

     

 

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

     

 

     灵活拓扑结构实现用户的灵活方案:

     

 

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

   

     ① 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 进程不会意外终止
        ⒉ 需要在不同的阶段实现数据的过滤或者转换
        ⒊ 多个源数据库复制到数据中心
        ⒋ 数据需要复制到多个目标数据库
        
     ⑦ Data source
        
        当处理事务的变更数据时,Extract 进程可以从数据库(Oracle, DB2, SQL Server, MySQL等)的事务日志中直接获取
        或从 GoldenGate VAM中获取。通过 VAM,数据库厂商将提供所需的组件,用于 Extract 进程抽取数据的变更
        
     ⑧ Groups
        
        为了区分一个系统上的多个 Extract 和 Replicat 进程,我们可以定义进程组
        例如:要并行复制不同的数据集,我们可以创建两个 Replicat 组
        一个进程组由一个进程组成(Extract 进程或者 Replicat 进程),一个相应的参数文件,一个 Checkpoint 文件,以及其它与之相关的文件
        如果处理组中的进程是 Replicat 进程,那么处理组还要包含一个 Checkpoint 表

 

OGG_Oracle GoldenGate简介

一、摘要


GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标 数据库,从而实现源数据库与目标数据库同步。

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

 

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

 

1. 优点:

(1). 安装、配置简单

(2). 管理维护相对直观,通过其自带的Oracle Management Pack for Oracle GoldenGate管理工具,能够对其进行图形化界面的管理

(3). 支持异构复制,如不同用户,不同数据库平台的复制,这也是其亮点所在

(4). 未来发展潜力还是很看好

2. 缺点:

(1). 官方的软件目前都只支持64位系统

(2). 由于是第三方工具,对环境要求比较高,特别是在LINUX环境下,对操作系统的字符集有所要求,主要是我们系统中的表名都是中文,必须要其对中文的支持

(3). 在进行应用进程的参数配置时候发现,对于特别多的表复制,暂时不清楚GoldenGate是否有限制,因为启动的时候,我配置参数对ZLHIS所有表进行复制的时候,会提示“”错误,但是如果只对少数表或者单个表复制的时候,又不出现该提示,这个问题正在核实

(4). 目前网上能查询到的资料相当有限,普及率不是很高

3. 综上所述,GoldenGate同流复制比较起来的亮点还是在异构上,不过Oracle官方的说法是以后一流的Streams技术将被集成到GoldenGate中,这也是其发展的趋势,其价值对于我们用户的应用来说,还是很值得继续深入研究

 

 

二、解析


1. OGG是数据同步软件,或者说是逻辑复制软件,其竞争对手有IBM CDC,DELL shareplex,DSG,DDS等等。

2. OGG软件是需要安装在操作系统上的,Oracle DB软件没有自带OGG软件(至少目前是这样的)

3. OGG软件有三大进程(说四大进程也行):

  • 三大进程:源头抽取进程、源头传输进程、目的端应用进程(即:复制进程)
  • 四大进程:源头抽取进程、源头传输进程、目的端server进程(负责在目的端写入trail文件)、目的端应用进程(即:复制进程)

4. OGG软件有两种trail file

  • 源头的trail file:由源头抽取进程写入。
  • 目的端的trail file: 源头传输进程传输到目的端,由目的端的server 进程写入目的端操作系统的指定路径下。

5.OGG软件中三大进程都有自己的checkpoint(即:检查点,用来记录每种进程读取到什么位置了,写入到什么位置了)

  • 源头抽取进程:有读取检查点 和写入检查点
  • 源头传输进程:有读取检查点 和写入检查点
  • 目的端应用进程:有读取检查点

6.OGG软件三大进程处理trail file的过程:

  • 源头抽取进程:读取oracle redo log(假设源头数据库是oracle),结合抽取进程的参数文件,将redo log中的内容变为OGG自有格式的文件(即:trail file),并写入到源头操作系统的指定路径下
  • 源头传输进程:读取“源头抽取进程写入的trail file”,结合传输进程的参数文件,发送需要同步的数据到目的端,在目的端是由server 进程负责写入。
  • 目的端应用进程:读取目的端操作系统的指定路径下的trail file,结合应用进程的参数文件,形成sql语句,在目的端db上执行这些sql语句。

7. OGG系统结构图

8. OGG可应对数据维护情况

 

三、进程结构


Manager进程:

运行在源端和目标端上。每个源端或者目标端有且只能存在一个Manager进程。

它是GoldenGate的控制进程,用于启动、监控、重启GoldenGate的其他进程,报告错误及事件,分配数据存储空间,发布阈值报告等。

其运行状态有两种即RUNNING(正在运行)和STOPPED(已经停止)。

2. Extract进程:运行在数据库源端。

负责从源端数据表或者日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到一个本地的trail文件。

在初始数据装载阶段,Extract进程直接从源端的数据表中抽取所有数据。

初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)。

extract进程会优选online log。

其运行状态包括STOPPED(正常停止)、STARTING(正在启动)、RUNNING(正在运行)、ABENDED(Abnomal End的缩写,表示异常结束)。

3. Pump进程:运行在数据库源端。

如果源端使用了本地的trail文件,那么Pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端。

Pump进程本质是Extract进程的一种特殊形式,如果不使用trail文件,那么就是Extract进程在抽取完数据以后,直接投递到目标端。

与Pump进程相对应的叫做Server Collector进程,对人们来说它是透明的。它运行在目标端,其任务就是把Extract/Pump投递过来的数据块重新组装成trail文件,人们称之为远程trail文件。

4. Trail文件:将抽取的事务信息转化成的一种GoldenGate专有格式的文件源、目标两端都会存在这种文件,源端存放的trail文件叫本地trail文件,目标端存放的trail文件叫远程trail文件。

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

5. Replicat进程:运行在目标端负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。

和Extract进程一样,Replicat也有其内部的checkpoint机制,保证进程重新启动后可以从上次记录的位置开始恢复,而无数据损失的风险。

它的运行状态和Extract进程一致,包括STOPPED、STARTING、RUNNING、ABENDED。

 

四、目录结构


 

1. dirchk:检查点文件

(1).用于存放由extract抽取进程和replicat复制进程创建的checkpoint文件,checkpoint文件保存者当前读和写的时间戳信息,通过这些信息保证了数据的准确性和数据容错功能。

      文件格式如下:<group name><sequence number>.<ext>

(2).group name就是我们配置的进程名称,序列号,加上后缀名成,后缀名称分为cpe(checkpoint extract)和cpr(checkpoint replicat)。

2. dirdat:跟踪文件和抽取文件

(1).用于存放GG跟踪文件和由extract进程创建的抽取文件,这些文件将被复制进程(或者其他需要的)进一步处理和使用。

(2).文件格式如下:用户自定义的2个前缀字符+6为序列号(跟踪文件)

                         或者 用户自定义的格式(抽取文件

3. dirdef:数据定义文件

(1).用于存放由DEFGEN组件创建的定义文件,包含在异构环境同步中的源或者目标端的数据定义。

(2).是一个可编辑的文本文件,比如你要添加一个新进创建表的相关的同步定义就可以在此直接编辑。

      文件格式如下:用户通过DEFGEN参数文件自定义

4. dirprm:参数文件

(1).用于存放GG的参数文件,这些参数文件可以通过系统文本编辑器直接编辑,也可以通过在ggsci命令行下edit params来编辑,达到的效果是一样的。

(2).文件格式如下:<group name/user-defined name>.prm

5. dirpcs:状态文件

(1).用于存放各个进程的状态信息,当相关进程运行的时候,这些进程的相关信息,比如程序名称,进程名称,进程监听端口,进程ID等等都将被写入各自状态信息文件。

     文件格式如下:<group>.<extension>

(2).其中extension有3个:pce(extract)  pcr(replicat)  pcm(manager)

6. dirrpt:报告文件

(1).用于存放各个进程的报告文件,内容为extract、replicat和manager进程运行相关的统计报告信息。

(2).文件格式如下:<group name><sequence number>.rpt

7. dirsql:SQL脚本文件

(1).用于存放由TRIGGEN组件创建的SQL脚本文件,这些SQL脚本用于创建GG相关的记录触发器和日志表。

(2).文件格式如下:用户自定义名称.sql

                         或者  表名称.sql

8. dirtmp:临时文件

The default location for storing large transactions when the size exceeds the allocated memory size.

Do not edit these files.

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值