OGG_GoldenGate安装和环境搭建(案例)
2014-03-02 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
OGG_GoldenGate安装和环境搭建(案例)的更多相关文章
- 第一章 andriod studio 安装与环境搭建
原文 http://blog.csdn.net/zhanghefu/article/details/9286123 第一章 andriod studio 安装与环境搭建 一.Android Stu ...
- android studio 安装与环境搭建
转摘自:http://blog.csdn.net/zhanghefu/article/details/9286123 第一章 andriod studio 安装与环境搭建 一.Android St ...
- Atitit 图像处理类库 halcon11 安装与环境搭建attilax总结
Atitit 图像处理类库 halcon11 安装与环境搭建attilax总结 正常安装软件,安装前请先退出其它一切正在运行的程序. 先安装halcon-10.0-windows.exe.安装完成后 ...
- cocos2d-x项目101次相遇-安装和环境搭建 -xcode
cocos2d-x 101次相遇 / 文件夹 1 安装和环境搭建 -xcode 2 Scenes . Director, Layers, Sprites 3 建立图片菜单 4 在 ...
- jdk8的安装与环境搭建
jdk8的安装与环境搭建 jdk8下载网址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html ...
- 一、webpack那点事-安装、环境搭建
前言: 还记得两年前刚来公司才几个月,经理就安排我去做JS地图相关的维护和开发工作,然后就跟着一个公司老鸟(没俩月他离职了)熟悉地图相关的功能. 本人嘛,那会前端JS实际开发经验也才几个月,然后当我看 ...
- Windows 2012 下Redmine安装和环境搭建
公司在过去一年中处于高速发展创业期,对于技术管理和项目管理没有找到一个很好的管理工具,使用过Teanbition+禅道+SVM的集成管理工具,但是明显各工具之间联系性差,断层严重,不能很好的形成团队成 ...
- Go语言入门(一)特性、安装、环境搭建、第一个程序等
Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮 ...
- 2019-9-16:渗透测试,基础学习,Linux下软件安装,环境搭建,笔记
Centos linux下软件安装yum 通过分析rpm包头数据后,自动解决依赖关系,直接云端下载软件,根据不同版本系统获取不同软件信息,按顺序下载rpm包,安装软件yum search 软件名:搜索 ...
随机推荐
- python 斐波拉契数列数列
'''斐波拉契数列'''def Fibonacci(n): first, next = 0, 1 i = 0; while i < n: print next first, next = nex ...
- 【转】gcc选项
http://zodiac1111.github.io/blog/config-gcc-warning/
- kindle 电子书去除DRM
DRM,Digital Rights Management,数字版权管理. amazon购买的图书会下发到你的kindle设备.电子书格式通常为.azw3.里面包括了DRM,仅仅能在你的设备上使用. ...
- spring boot xml与dao 映射关系
mybatis的xml路径要和 dao的路径一模一样 dao 用@Mapper 注解
- Java 正则表达式提取标签中的属性(src 连接地址)等
public class Test { public static void main(String[] args) { String source = "<p><img ...
- [Algorithm] Trie data structure
For example we have an array of words: [car, done, try, cat, trie, do] What is the best data structu ...
- Ejb in action(一)——开篇介绍
从今天開始.我们共同来学习JavaEE中一个很重要的规范:Ejb. 既然您已经找到了这篇文章.就说明您至少已经对分布式开发有个大体上的概念了,之前没了解过也没关系,正好通过咱们的共同学习,一起来了解它 ...
- DevExpress学习03——label控件的背景色问题
今天使用了DevExpress的labelControl,发现拖放上去,其背景色和主窗体的背景一样,非常不谐调,把BackColor设置为透明也不行(Windows中的Label可以). 没有办法,我 ...
- python手记(42)
#!/usr/bin/env python #-*- coding: utf-8 -*- #code:myhaspl@qq.com import cv2 import numpy as np fn1= ...
- 子查询三(在FROM子句中使用子查询)
FROM子句中使用子查询一般都是返回多行多列,可以将其当作一张数据表 示例一.查询出每个部门的编号,名称,位置,部门人数,平均工资 SELECT d.deptno,d.dname,d.loc,temp ...