zoukankan      html  css  js  c++  java
  • OGG内部进程介绍

    1.首先看看什么是OGG,以及OGG的用途
          简单的来讲 Oracle Golden Gate (简称OGG)是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。OGG可以跨越不通平台(包括不通操作系统,数据库)实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,OGG可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构
     
    2.OGG的逻辑结构图
    如上图所示,OGG包含三大关键进程 Exract,Manager,Replicat等进程:
     
    1.manager进程 (MGR)
       Manager进程是GoldenGate的控制进程,运行在源端和目标端上,在目标端和源端有且只有一个manager进程.
       它主要作用有以下几个方面:
          启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等.
     
    2.extract进程(EXT)
       Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。
       Extract的作用可以按照表来时间来划分:
       1.初始时间装载阶段:在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据.
       2.同步变化捕获阶段:初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)
     
    但是OGG并不是对所有的数据库都支持ddl操作
       Extract进程会捕获所有已配置的需要同步的对象变化,但只会将已提交的事务发送到远程的trail文件用于同步。当事务提交时,所有和该事务相关的日志记录被以事务为单元顺序的记录到trail文件中。Extract进程利用其内在的checkpoint机制,周期性的记录其读写的位置,实现断点同步。通过上面的两个机制,就可以保证数据完整性.
       多个Extract 进程可以同时对不同对象进行同步操作。例如,可以在一个extract进程抽取并向目标端发生事务数据的同时,利用另一个extract进程抽取的数据做报表。或者,两个extract进程可以利用两个trail文件,同时抽取并并行传输给两个replicat进程以提高同步性能.
       Extract进程的状态:Stopped(正常停止),Starting(正在启动),Running(正在运行),Abended(Abnomal End缩写,标示异常结束)
     
    3.Pump进程
       pump进程运行在数据库源端,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在抽取完数据以后,直接投递到目标端,生成远程trail文件.
       与Pump进程对于的叫Server Collector进程,这个进程不需要引起我们的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。它运行在目标端,其任务就是把Extract/Pump投递过来的数据重新组装成远程trail文件.
       pump进程可以在线或者批量配置,他可以进行数据过滤,映射和转换,同时他还可以配置为“直通模式”,这样数据被传输到目标端时就可以直接生成所需的格式,无需另外操作. 直通模式提高了data pump的效率,因为生成后的对象 不需要继续进行检索.
     
    在大多数情况下,oracle都建议采用data pump,原因如下:
       1.为目标端或网络问题提供保障:如果只在目标端配置trail文件,由于源端会将extract进程抽取的内容不断的保存在内存中,并及时的发送到目标端。当网络或者目标端出现故障时, 由于extract进程无法及时的将数据发送到目标, extract进程 将耗尽内存然后异常终止。 如果在源端配置了data pump进程,捕获的数据会被转移到硬盘上,预防了异常终止的情况。当故障修复,源端和目标端 恢复连通性时,data pump进程发送源端的trail文件到目标端。
       2.可以支持复杂的数据过滤或者转换 :当使用数据过滤或者转换时,可以先配置一个data pump进程在目标端或者源端进行第一步的转换,利用另一个data pump进程或者 Replicat组进行第二部的转换。
       3.有效的规划存储资源 :当从多个数据源同步到一个数据中心时,采用data pump的方式,可以在源端保存抽取的数据,目标端保存trail文件,从而节约存储空间。
       4.解决单数据源向多个目标端传输数据的单点故障 :当从一个数据源发送数据到多个目标端时,可以为每个目标端分别配置不同的data pump进程。这样如果某个目标端失效或者网络故障时,其他的目标端不会受到影响可以继续同步数据。
     
    4.Replicat进程
       Replicat进程,称之为复制应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中.和Extract进程一样,Replicat也有其内部的checkpoint机制,保证重启后可以从上次记录的位置开始恢复而无数据损失的风险.
       Replicat 进程的状态包括Stopped(正常停止),Starting(正在启动),Running(正在运行),Abended(Abnomal End的缩写,标示异常结束)。 
     
    5.Trail文件
       作用:存储事务变化信息(DDL和DML事务操作记录)
       主库上的trail文件是可选的
       备库上的trail文件是必须的(因为Replicat进程需要读取该文件中的DDL或DML SQL用来应用)
       如果在主库上面定义了PUMP进程,那么就需要在主库上创建trail文件,因为PUMP进程将主库上的trail文件以块级别传输给网络上的从库。
    -------------------------------------- | 不忘初心,方得始终,为前行的路加油!| --------------------------------------
  • 相关阅读:
    lucene复合条件查询案例——查询name域 或 description域 包含lucene关键字的两种方式
    谈谈你对spring的理解?
    模拟Http请求的几种常用方式
    idea破解教程
    Pycharm 或者 idea 注册码 (亲测可用)
    超详细虚拟机工具和Centos7 Linux系统安装
    严重: Error loading WebappClassLoader context:异常的解决方法(转)
    spring cloud 笔记记录
    近一周学习之-----vue学习快乐之旅(1)
    近一周学习之-----vue开发工具visual studio code
  • 原文地址:https://www.cnblogs.com/svan/p/4102454.html
Copyright © 2011-2022 走看看