关于oracle goldengate简称ogg这个产品是oracle收购goldengate软件,然后将其集成到oracle goldengate中去,ogg主要是一种基于日志的挖掘的技术,基本实现原理是通过在源端捕获数据变化的日志然后传输到远程目标数据库中再次应用该日志,从而实现源数据库和目标数据库之间的同步。
相对于oracle database的原理体系,ogg从体系上来说是比较简单的,跟oracle的data guard相比,ogg可以实现异构平台和不同版本的数据库之间的同步,可以提供细粒度的数据同步功能,n对n的双向复制同步功能,而oracle data guard只能提供单向的数据库级别的同步,oracle data guard所以主要也是作为一个灾难恢复的方案。
既然说到oracle goldengate就不得不提到oracle stream了,oracle stream也是基于日志挖掘的技术提供异构平台的数据同步复制功能,其基本原理和oracle goldengate相同,不过由于oracle goldengate的大力推崇,目前oracle已经不提供oracle stream的开发,而只是提供其相应的服务而已 。
由于ogg的大力推崇,同样小鱼也准备好好下功夫学习下ogg,下面小鱼简单说说ogg的基本体系知识。
Oracle golden gate是通过解析源数据库在线日志或归档日志获得数据的增量变化,通过tcp/ip将变化投递到目标端,最后应用到远程数据库,从而实现数据同步。ogg的原理确实比较好理解。
Ogg的几个关键的进程:
Manager进程:manager进程是golden gate的控制进程,运行在源端和目标端,用于启动、监控、重启golden gate其他进程,报告错误和事件、分配数据存储空间、发布阀值报告等。
Extract进程:extract进程运行在源端,负责从源数据库表或者日志中捕获数据库。所有提交的事务相关的日志会被以事务为单元顺序记录到trail文件,extract进程也有其内部的checkpoint机制,周记性记录读写位置,checkpoint机制是为了在extract进程崩溃后重新启动extract进程后,goldengate可以恢复到之前checkpoint状态,从而从这个点继续运行,这个checkpoint机制跟oracle内部的checkpoint机制含义大体相同。extract正是通过上面的trail文件和checkpoint来保证数据的完整性。
Pump进程:pump进程运行在数据库源端,主要是在将源端产生的本地trail文件,然后把trail以数据块形式通过tcp/ip发送到目标端,o也推荐这种方式。如果不使用trail文件,extract进程会抽取完数据以后,直接投递到目标端,生成远程trail文件。
Trail文件:extract抽取完数据后会将对应的事务信息转化为goldengate专有格式文件trail,trail文件主要是为了防止单点故障,事务信息持久化,并且使用checkpoint机制记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传。
Server collector进程:server collector进程主要是把extract或pump进程投递过来的数据组装成远程的trail文件,server collector不需要我们对其进程任何配置。
Replicat进程:replicat进程运行在目标端,主要是通过读取目标端的trail文件内容然后将其解析为对应的dml和ddl语句,最后应用到目标数据库中。Replicat进程也有其内部的checkpoint机制,保证重启后可以从上次记录的位置开始恢复从而保证数据一致性和安全性。
