GoldenGate学习笔记一_进程、目录与参数配置

来源:互联网 发布:视频照片制作软件 编辑:程序博客网 时间:2024/05/22 11:42
1、GoldenGate进程与文件

Manager进程


    Manager进程运行在源端和目标端上,它主要作用包括:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。

    每个源端或者目标端有且只有一个Manager进程,该进程有两个状态RUNNING和STOPPED。

    在Windows上,Manager进程作为一个服务来启动,在Linux/Unix系统中,它是一个操作系统进程。

Extract进程

    Extract进程运行在数据库源端,负责从源端数据表(初始化过程)或者日志(同步过程)中捕获数据。

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

    初始数据同步完成以后,在变化捕获阶段,Extract进程负责捕获源端数据的变化。

    Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常写入到一个本地的trail文件。这种机制保证了如果Extract进程终止或操作系统宕机,重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

    Extract进程的状态包括STOPPED、STARTING、RUNNING、ABENDEN(异常终止)。

Pump进程

    Pump进程运行在数据库源端,如果源端使用了本地的trail文件,那么Pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端,这也是推荐的方式。
    
    Pump进程本质是Extract进程的一种特殊形式,如果不使用trails文件,那么就是Extract进程在抽取完数据以后,直接投递到目标端。

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

Trail文件

    为了更有效,更安全地把数据库事务信息从源端投递到目标端,GoldenGate使用Trail文件。

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

Replicat进程

    Replicat进程运行在目标端,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库。和Extract进程一样,Replicat进程也有其内部的checkpoint机制,保证进程重启后可以从上次记录的位置开始恢复。其运行状态包括STOPPED、STARTING、RUNNING、ABENDEN(异常终止)。

2、GoldenGate目录结构

    dirchk:用来存放检查点(Checkpoint)文件。

    dirdat:用来存放Trail文件。

    dirdef:用来存放通过DEFGEN工具生成的源或目标端数据定义文件。

    dirpcs:用来存放进程状态文件。

    dirprm:用来存放配置参数文件。

    dirrpt:用来存放进程报告文件。

    dirsql:用来存放SQL脚本文件。

    dirtmp:当事务所需要的内存超过已分配内存时,缺省存储在这个目录。


3、一些重要的进程配置参数

3.1 TABLE|MAP

    
    TABLE用于extract进程;MAP用于replicat进程。
    
    抽取test模式下所有表:
    
    TABLE test.*;
    
    MAP用于replicat进程应用变更时执行的对象映射。
    
    将源库test模式中的表映射到目标库test模式中:
    
    map test.*,target test.*;
    
3.2 DDL
    
    DDL用于extract和replicat进程。
    
    抽取(通过中间表)源数据库所有DDL操作:
    
    DDL INCLUDE ALL;
    
    抽取源库中test模式下对象的DDL操作:
    
    DDL INCLUDE OBJNAME test.*
    
    当extract进程中仅使用DDL而不含任何过滤的话,将捕获所有支持的DDL操作。
    
    当replicat进程中仅使用DDL而不含任何过滤的话,将应用trail中所有的DDL操作。
    
    DDL中组合过滤条件的例子:
    
    DDL &
    INCLUDE UNMAPPED &
    OPTYPE alter &
    OBJTYPE 'table' &
    OBJNAME users.tab* &
    INCLUDE MAPPED OBJNAME * &
    EXCLUDE MAPPED OBJNAME temporary.tab
    
3.3 KEYCOLS

    在TABLE|MAP中使用的参数,用来解决表没有主键和唯一键的情况下,如何定位行的问题。

    GoldenGate在定位目标表中的行时,使用的是表的主键或者唯一键,但是如果源表上没有这些键,那么GG会利用源表所有字段算出一个虚拟的主键,然后通过这个虚拟主键再去目标表上找到相同的行,此时如果目标表字段和源表字段定义相同,则不会出现问题,但是如果目标表上的列定义与源表不同,那么在同步时,通过这个虚拟主键将找不到目标表上的对应行,导致无法同步。为了解决这个问题,可以为TABLE|MAP中配置KEYCOLS参数(默认情况为表的所有列作为KEYCOLS)。

    例子:
    
    TABLE hr.emp, KEYCOLS (id, first, last, birthdate);
    
    MAP scott.orders, TARGET scott.orders, KEYCOLS(OID);


3.4 HANDLECOLLISIONS

    HANDLECOLLISIONS是一个replicat进程参数。在replicat进程中使用该参数时,即使目标数据库环境中存在数据完整性问题(如 update、delete 操作遇到缺失行或重复的插入操作),replicat进程仍然能够继续处理trail中的数据。

    a、当replicat遇到一个列上的更新,
    
    如果在目的端没有发现该行的old key,队列文件中的变化记录被转化为插入;

    如果目的端存在该行的new key,replicat删除包含old key的这行记录,然后包含new key的行被队列文件的值覆盖。

    b、当replicat遇到一个重复记录错误,初始化加载应用的静态记录被队列文件中的改变记录覆盖。

    c、当replicat在更新或删除操作不影响键列时遇到一个丢失记录错误,队列中的变化记录被丢弃。
    
    
3.5 ASSUMETARGETDEFS

    ASSUMETARGETDEFS是一个replicat进程参数,当源表与目标表结构一致时,使用此参数。


0 0
原创粉丝点击