一、Oracle GoldenGate介绍
GoldenGate软件是一种基于日志的结构化数据复制软件。GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。
1、应用场景
1)高可用容灾
2)数据库迁移、升级(支持跨版本、异构数据库、零宕机时间、亚秒级恢复)
3)实时数据集成(支持异构数据库、多源数据库)
2、常用拓扑
(下图来自网络)
3、支持的平台和数据库
我这边几年前做过oracle到mysql的同步,也作过mysql到mysql的同步(支持不是很好,而且有DDL和DML的限制、字段类型限制等)
(下图来自网络)
4、OGG同步原理
源端通过抽取进程提取redo log或archive log日志内容,通过pump进程(TCP/IP协议)发送到目标端,最后目标端的rep进程接收日志、解析并应用到目标端,进而完成数据同步。
5、OGG相关进程
GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程
1)Manager进程
不管是源端还是目标端必须并且只能有一个Manager进程,可以启动、关闭、监控其他进程的健康状态,报告错误事件、分配数据存储空间,发布阀值报告等。
2)Extract 进程
运行在数据库源端,负责从源端数据表或日志中捕获数据,然后捕获到的将写到本地trail文件。 想要复制的对象数据发生改变时,Extract进程 就会进行捕捉,当事务提交时,所有和该事务相关的日志记录被以事务为单元顺序的记录到trail文件中。Extract进程利用其内在的checkpoint机制,周期性的记录其读写的位置,实现断点同步。
Extract其实有两种捕获模式
A.传统模式
抽取方式:基于在线日志或归档日志进行抽取
B.Integrated模式(
Oracle Goldengate 11g版本)
抽取方式: Logmining server负责以LCR格式从数据库日志中捕获数据变化,extract进程再将这些数据存入 trail文件。
传统模式是大家非常熟悉的模式啦,平时搭建的都是传统模式。但是Integrated模式是
Oracle Goldengate 11g版本才出现的,很多人会比较陌生,有兴趣的朋友也可以去了解一番。
3)Pump进程(可选)
运行在数据库源端, 其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端。
但是如果如果不使用trail文件,那么extract进程在抽取完数据以后,直接投递到目标端,生成远程trail文件,那么这时候,Pump进程就可以不用配置(存在)了。
4)Replicat进程
运行在数据库目标端 ,负责读取源端传送到目标端的trail文件中的内容,并将其解析为DML或 DDL语句, 然后应用到目标数据库中。
Replicat两种模式
A.传统模式:基于sql交付,最常用的一种方式
B.Integrated模式(OGG12c)
对应这种模式,官方文档是这样描述的
Replicat 操作的过程如下:
读取源端传输过来的 trail 文件;执行data 数据过滤和转换操作;
DML操作:根据commit顺序,构造LCR;DDL 操作:Replicat 进程直接apply;
Replicat 通过lightweight streaming 接口和目标库后台进程(Database inbound server)建立 连接;
将LCR传输到inbound server,然后apply 这些数据到目标数据库。
两个Apply Servers的Integrated模式
其实对于进程的Capture and Apply Modes可以参考一下官方文档:
5)
Server Collec
tor进程
运行于目标端,作用就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。运行期间无需任何配置。是一个完全自动的进程
好了对GoldenGate的进程介绍到处就告一段落了。
6、OGG相关目录
dirbdb
dirchk:检查点文件,记录了该进程的检查点信息
dircrd
dirdat:trail日志文件,存放收取接手的日志文件
dirdef
dirdmp
dirout
dirpcs
dirprm:参数文件,该进程所配置的参数(edit param 进程组名 就是配置该文件)
dirrpt:report文件,可以查看该进程运行时的报错信息等(view report 进程组名 就是看该文件)
dirsql
dirtmp
dirwlt
dirwww
二、Oracle GoldenGate安装
三、Oracle GoldenGate数据同步