OGG技术原理简述

OGG架构

在一个典型的OGG环境中,会有两个数据库存在,同时也会有两个GG实例运行,主要包括四个核心对象:源数据库、目标数据库、源GG、目标GG。
数据复制运行流程大概如下:
源数据库在运行过程中,LGWR进程会源源不断地把日志记录到联机日志中(online log)。源GG的工作起点或者整个GG数据库流的起点也就是从源数据库的联机日志开始。
在源GG端:
1) Extract进程从联机日志挖掘数据,记录到本地的Source Trail文件中。
2) Data Pump进程从Source Trail文件把数据出来,然后通过网络,丢给目标GG上的Collector进程。
在目标端:

  1. Collector进程从接收数据到一个本地文件(Remote Trail)中。
    2)另一个Replicate进程从这些文件中挖取数据,然后在目标数据库上更新数据。
    注:可以把源GG端步骤1,2合并成一个,直接把数据挖掘出来发送给目标端。

Capture(Local Extract)Process

捕获进程就是源GG把源数据库中变化(插入、更新、删除)数据抓出来的过程。通常指Local Extract进程,抽取进度还包括Data Pump Extract ,Inital-Load Extact和Discard File。
Inital-Load:主要用于目标数据库的初始化,这个过程类似Oracle EXP/IMP,数据泵。

Local Extract进程特点

  1. 可以直接把挖掘的数据发给目标GG或者缓存本地Source Trail
  2. 只会记录已经提交的变化,而把其他的活动(如回滚)过滤掉。
  3. 可以捕获DML,也可以捕获DDL
  4. 支持多进程或者单进程处理全部表或多个表
  5. 支持Schema级别、表级别、列级别不同粒度的抓取

Source Trail

Source Trail作为一个中间文件,保存抓取进程捕获的数据,以大块方式进行存储,等待下一个环节(Data Pump Extract)处理。Trail文件是一种GG特有的文件,具有自己的元数据。在每个文件或者每条记录上,都一个“头”记录。为了跟踪事物和保证数据一致性,采用CSN(Commit Sequece Number)这个概念,把CSN写到检查点文件(checpoint)和Trail文件中。CSN类似Oracle SCN,在SQLserver复制中用虚拟日志文件号,虚拟日志段号和虚拟日志记录号的拼接形成。

Source Trail进程特点

  1. 可以控制Source Trail文件大小,保证写满后,创建新的Trail文件。
  2. 支持Trail文件自动清理,按照保留时间或者Trail文件的总数量限制

Data Pump

Data Pump主要功能是用于抓取Source Trail,然后发送给目标GG。
主要特点:
1.支持多级Data Pump:可以通过Data Pump将数据引入一个中间区,这个中间区可以部署多个DataPump对数据进行过滤,再导向多个目标系统。
2.对于不能处理的记录,同Extact进程一样写入discard文件。
3.支持数据压缩和加解密

Collector

Collector进程主要用于接收源数据库发送数据的。

Remote Trail

Remote Trail文件和SourceTrail 类似,具有相同的特点,区分在于存放的位置不同,命名格式为xxnnnnn.

发布(Delivery,Repalicate)

所谓发布(复制),就是把抓到变化数据应用到目标数据库的过程。
其特点:

  1. 支持DDL,DML
  2. 支持多进程、多表、多列灵活组合。
  3. 对于不能处理的记录,同Extact进程一样写入discard文件。

管理器和组

管理器进程(Manager)管理所有GG进程和资源。通过GGSCI发送来的命令执行。
组将抽取到应用整个流程的进程和文件,组成一个组。

进程检查点(checkpoint)

GG的各组进程都是独立工作的,都可以独立启动和关闭。为了解决断点和续传的问题,这些进程会记录各自的读写位置信息,从而防止进程因系统、网络崩溃而导致的数据丢失,这个记录动作就是“检查点”。检查点对GG保证数据一致性非常重要。
GG的检查点由一个内部进程自动控制,与数据库检查点的概念类似。提取进程的检查点记录它在数据源中的读取位置和队列的写出位置,复制进程的检查点记录它读取队列的位置。每个提取进程和复制进程都由自己对应的检查点信息。当GoldenGate的进程重启时,由它记所记录的检查点决定需求读取的队列位置。
GG的检查点信息由两种存放方式:
1.文件形式:放在一个目录下,一个进程(或者一个组)对一个文件。源端GG的Extract进程只能使用这个模式。
2.数据库表:目标GG推荐使用这种形式,记录量比较小,基本上是更新行,少量插入行。

环境要求

源数据库需求

如果是Oracle

  1. 附加日志(Supplemental Logging)。一般在逻辑Standby和stream这两个Oracle特性中用到。附加日志对修改记录精确定位起了非常关键的作用,对后续的表级、列级的抽取复制提供详细信息。
  2. 日志设置
  3. 归档日志:避免日志生产过快,未来得及抓取就被覆盖了。
  4. 强制日志模式:避免有些操作(直接路径加载)会跳过redo,导致数据无法同步。
  5. 开启附加日志(结合实际情况进行,详细配置)。

目标数据库需求

配置检查表信息(采用数据库形式)

GG实战

单向复制实践概述

流程概述:
1.CDC(Change Data Caputure):开启源端GG的Extract、Data Pump进程,记录初始加载过程数据变化。
2.数据初始加载:将源数据库的历史数据一次性复制到目标数据库去。
3.Change Delivery:启动Replicat进程,读取数据应用到目标端。

GG配置

GG配置注意点:

  1. 可配置多用户针用于不同单复制流程
  2. 配置附加日志
  3. 配置目标数据库:关闭和禁用触发器和级联约束;配置检查表

# GG高级用法

典型拓扑结构

  1. 单向(查询分流)
  2. 双向(主用/备用或者主动-主动,实现高可用性)
  3. 对等(负载平衡、多住)
  4. 广播(数据分发)
  5. 集成/整合(数据仓库)
  6. 级联式(数据集市)

RAC的特殊说明

ASM文件的访问

  1. net8:基于TCP网络访问,需要配置TNS和账号密码
  2. BEQ方式:IPC机制(进程间直接通信),需要配置TNS
  3. DBLOGERADER:ASM API接口

RAC节点部署

可以放在任何一个节点上,可利用GRID实现节点间的Failover;通过ACFS,实现GG的共享安装。

定义日志线程数

GG与rac日志线程数统一

数据过滤

支持表、列、行过滤

数据来源过滤

在双向复制模式下,对两端抽取和应用进行针对性过滤,避免形成死循环。

数据映射

能够在目标端和源端不同表和不同列之间进行映射,实现同步复制。

##值的处理
1.简单的赋值:对目标端某一列进行固定值赋值
2.利用SQL语句和存储过程进行赋值

Trail文件和清理

数据压缩

目前10.4不支持对压缩表的数据复制

**内容摘自《大话Oracle Grid:云时代的RAC》

  • 2
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值