OGG的基本概念
1.OGG简介
- Oracle GoldenGate软件是一种基于日志的结构化数据复制软件。
- GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。可简称为OGG。
- 文档路径:https://docs.oracle.com/en/middleware/goldengate/core/19.1/
- Oracle Goldengate for bigdata可将源数据库中的增量数据实时同步至大数据系统,例如HDFS, HBase, Kafka, Flume, JDBC, Cassandra, and MongoDB
- 文档路径:https://docs.oracle.com/en/middleware/goldengate/big-data/19.1/index.html
- OGG 是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化
- OGG 能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟。
2.应用场景
- 高可用容灾
- 数据库迁移、升级(支持跨版本、异构数据库、零宕机时间、亚秒级恢复)
- 实时数据集成(支持异构数据库、多源数据库)
3.GoldenGate基本架构
上图所示分为两部分,一部分为源端OGG,一部分为目标端OGG。增量数据由源端OGG进行抽取存储后,再通过网络发送到目标端OGG处,由目标端进行获取并复制至目标数据库中(或目标端使用OGG for bigdata则可将增量数据同步至hdfs,kafka,hbase等组件中)。
4.数据复制的拓扑结构
上图所示为OGG支持的多种拓扑结构,可通过不同的配置方式灵活实现。
5.OGG的基本组件
- Manager
- Extract
- Trail
- Data pump
- Collector
- Replicat
- Checkpoint
组件 | 说明 |
---|---|
Manager | Manager进程顾名思义是一个管理进程,无论是源端或是目标端,都必须有且仅有一个Manager进程,他的作用主要是启动、关闭OGG进程、监控其他进程的健康状态、分配数据存储空间、启动动态进程、分配端口给GoldenGate进程、管理trail file、创建事件,错误和诊断报告等。 在其他进程启动之前,Manager进程 必须先在源端和目标端启动。 在整个OGG运行期间,Manager进程必须保持运行状态。 |
Extract | Extract进程运行在源端或者根据系统和业务的需求可以同时运行在两端,抽取捕获系统变更数据;它可以配置为初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据),它也可以在支持DDL变更的系统中抽取捕获DDL。 当配置为数据同步时,extract进程抽取捕获extract配置文件里配置的对象的任何DML和DDL(需要额外配置)的操作,extract进程记录这些操作,直到用户提交或回滚事务;当收到回滚(rollback)时,extract撤销这些记录。当收到(commit)操作后,extract进程记录保存这些操作到一个或多个trail文件里并以队列的形式发送到目标端,以确保数据传输速度和数据的一致性。 |
Trail | 为了持续地提取与复制数据库变化,GoldenGate 将捕获到的数据变化临时存放在磁盘上的一系列文件中,这些文件就叫做 Trail 文件。这些文件可以在源端上也可以在目标端上,也可以在中间系统上,这依赖于选择哪种配置情况。在数据库源端上的叫做Local Trail或Extract Trail或Source Trail,在目标端的叫做 Remote Trail。 trail文件是一种Golden Gate特有的文件,具有自己的元数据。在每个文件或者每条记录上,都有一个”头”记录。为了追踪事务和保证数据一致性,采用CSN(Commit Sequece Number)这个概念,把CSN写到检查点文件(checkpoint)和trail文件中。CSN类似Oracle中的SCN,在SQLserver复制中用虚拟日志文件号,虚拟日志段号和虚拟日志记录号的拼接形成。 trail文件可以在进程需要时使用ADD RMTTRAIL or ADD EXTTRAIL命令添加创建,文件名为11个字符,在创建时指定两个字符然后由GoldenGate填充另外九个序列字符,序列字符从000000000到999999999,若文件到达99999999后,会从00000000继续开始,之前的文件会被清理。比如创建时指定了两个字符为’tr’,那么GoldenGate会自动创建从tr000000001开始的文件保存抽取捕获的数据;文件名是唯一的,默认保存在GoldenGate_home/dirdat目录下。 |
Data pump | Data Pump运行在数据库源端,是第二种类型的GoldenGate extract配置,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端。如果不使用Data Pump,extract进程必须发送抽取捕获的操作数据到目标端trail;如果配置了Data Pump,extract进程抽取捕获数据写入到trail,Data pump读取trail并且通过网络发送trail到目标端trail,data pump 加强了源端和目标端抽取捕获数据的可用性。 pump进程的主要优点: 1)保护网络传输失败和目标端失败。 2)可以实现复杂的数据过滤和转换。 3)可以结合多个数据源到目标端。 4)可以同步一个源数据到多个目标端。 |
Collector | collector是目标端后台进程,默认情况下,源端extract进程初始化TCP/IP连接到目标端的collector进程,但是因为GoldenGate是可配置的,所以有些时候可能需要在目标端配置和初始化collector,比如目标端同步时区,但是源端的时区小于目标端的情况下。 collector的功能:1.根据源端extract进程的请求,扫描和绑定可用的端口给mgr主进程分配给请求的extract进程;2.接收源端extract抽取trail并写入到目标端的trail文件;当源端发出网络请求时mgr自动启动collector后台进程,所以GoldeGate用户是不可以与它交互的。collector只能同时接受一个extract进程信息(一对一)并且随着extract的终止而终止。 |
Replicat | Replicat进程运行在数据库目标端,负责读取目标端的trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中(或hdfs,kafka,hbase等大数据组件中)。 就像 Extract 进程一样,也可以配置 Replicat 进程来完成如下工作: 1)初始化数据装载:对于初始化数据装载,Replicat 进程应用数据到目标对象或者路由它们到一个高速的 Bulk-load 工具上。 2)数据同步,将 Extract 进程捕获到的提交了的事务应用到目标数据库中。 Replicat 进程的状态包括Stopped(正常停止),Starting(正在启动),Running(正在运行),Abended(Abnomal End的缩写,标示异常结束)。 |
Checkpoint | Checkpoint存储从文件读取和写入的检测点位置,用于还原和恢复数据,Checkpoint确保发生变化并提交(commit)的数据被extract抽取捕获和被replicat进程应用到目标端;保证在系统、网络或者GoldenGate需要重启进程时发生的错误不会导致数据丢失;在复杂的同步配置中checkpoints启用多个extract和replicat进程从同一个trail集中读取数据 checkpoint信息会默认存储在goldengate的子目录dirchk中。在目标端除了checkpoint文件外,我们也可以通过配置通过额外checkpoint table来存储replicat的checkpoint信息。 |
6.OGG的主要目录结构
dirchk:检查点文件,记录了该进程的检查点信息
dirdat:trail日志文件,存放接收的日志文件
dirdef:用来存放通过DEFGEN工具生成的源或目标端数据定义文件
dirpcs:用来存放进程状态文件
dirprm:用来存放参数文件,该进程所配置的参数(edit param 进程名就是配置该文件)
dirrpt:用来存放进程报告(report)文件,可以查看该进程运行时的报错信息等(view report 进程名就是看该文件)
dirsql:用来存放SQL脚本文件
dirtmp:当事物所需要的内存超过已分配内存时,缺省存在此目录