2014-03-01 Created By BaoXinjian
一、摘要
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.
Thanks and Regards