和传统的逻辑复制一样,Oracle GoldenGate实现原理是通过抽取源端的redo log或者archive log,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端数据同步。
下图展示了Oracle GoldenGate的技术架构。
Manager进程
Manager进程是GoldenGate的控制进程。Manager进程运行在源端和目标端上,它主要有以下几个方面的作用:启动、监控、重启GoldenGate的其他进程,报告错误及事件,分配数据存储空间,发布阈值报告等。
每个源端或者目标端有且只能存在一个Manager进程。其运行状态有两种即RUNNING(正在运行)和STOPPED(已经停止)。
Extract进程
Extract进程运行在数据库源端,负责从源端数据表或者日志中捕获数据。 在早期的GoldenGate版本中,它通常被称为Collect进程。按照其所属的阶段不同,Extract的作用可以按照时间来划分。
在初始数据装载阶段,Extract进程直接从源端的数据表中抽取所有数据。
初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)。
Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到一个本地的trail文件。 这种机制是为了保证如果Extract进程终止或者操作系统宕机,重新启动Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。extract进程会优选online log。
其运行状态包括STOPPED(正常停止)、STARTING(正在启动)、RUNNING(正在运行)、ABENDED(Abnomal End的缩写,表示异常结束)。
Pump进程
Pump进程运行在数据库源端,其作用非常简单。 如果源端使用了本地的trail文件,那么Pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端,这通常也是推荐的方式。
Pump进程本质是Extract进程的一种特殊形式,如果不使用trail文件,那么就是Extract进程在抽取完数据以后,直接投递到目标端。
与Pump进程相对应的叫做Server Collector进程,,这个进程不需要关注,因为在实际的操作中无需任何配置,所以它是透明的。它运行在目标端,其任务就是把Extract/Pump投递过来的数据块重新组装成trail文件,人们称之为远程trail文件。
Trail文件
为了更有效的、更安全的把数据库事务信息从源端投递到目标端,GoldenGate引进trail文件的概念。前面提到的Extract抽取完数据之后,GoldenGate会将抽取的事务信息转化成的一种GoldenGate专有格式的文件,源、目标两端都会存在这种文件,源端存放的trail文件叫本地trail文件,目标端存放的trail文件叫远程trail文件。
trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传。
Trail文件并不总是必须的。人们可以在配置Extract进程的时候通过TCP/IP协议直接把日志的信息投递到目标端。但是并不推荐这么做,因为一旦发生系统宕机或者网络故障,则有可能造成数据的丢失。
Replicat进程
Replicat进程,通常把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。
和Extract进程一样,Replicat也有其内部的checkpoint机制,保证进程重新启动后可以从上次记录的位置开始恢复,而无数据损失的风险。
它的运行状态和Extract进程一致,包括STOPPED、STARTING、RUNNING、ABENDED。
--本篇文章转自:https://wenku.baidu.com/view/f073b406f01dc281e43af007.html