ogg基本架构原理

ops/2024/12/15 22:24:43/

OGG的基本概念

1.OGG简介

  • Oracle GoldenGate软件是一种基于日志的结构化数据复制软件。
  • GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。可简称为OGG。
  • 文档路径:https://docs.oracle.com/en/middleware/goldengate/core/19.1/
  • Oracle Goldengate for bigdata可将源数据库中的增量数据实时同步至大数据系统,例如HDFS, HBase, Kafka, Flume, JDBC, Cassandra, and MongoDB
  • 文档路径:https://docs.oracle.com/en/middleware/goldengate/big-data/19.1/index.html
  • OGG 是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化
  • OGG 能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟。

2.应用场景

  • 高可用容灾
  • 数据库迁移、升级(支持跨版本、异构数据库、零宕机时间、亚秒级恢复)
  • 实时数据集成(支持异构数据库、多源数据库)

3.GoldenGate基本架构

在这里插入图片描述

上图所示分为两部分,一部分为源端OGG,一部分为目标端OGG。增量数据由源端OGG进行抽取存储后,再通过网络发送到目标端OGG处,由目标端进行获取并复制至目标数据库中(或目标端使用OGG for bigdata则可将增量数据同步至hdfs,kafka,hbase等组件中)。

4.数据复制的拓扑结构

在这里插入图片描述

上图所示为OGG支持的多种拓扑结构,可通过不同的配置方式灵活实现。

5.OGG的基本组件

  • Manager
  • Extract
  • Trail
  • Data pump
  • Collector
  • Replicat
  • Checkpoint
组件说明
ManagerManager进程顾名思义是一个管理进程,无论是源端或是目标端,都必须有且仅有一个Manager进程,他的作用主要是启动、关闭OGG进程、监控其他进程的健康状态、分配数据存储空间、启动动态进程、分配端口给GoldenGate进程、管理trail file、创建事件,错误和诊断报告等。
在其他进程启动之前,Manager进程 必须先在源端和目标端启动。
在整个OGG运行期间,Manager进程必须保持运行状态。
ExtractExtract进程运行在源端或者根据系统和业务的需求可以同时运行在两端,抽取捕获系统变更数据;它可以配置为初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据),它也可以在支持DDL变更的系统中抽取捕获DDL。
当配置为数据同步时,extract进程抽取捕获extract配置文件里配置的对象的任何DML和DDL(需要额外配置)的操作,extract进程记录这些操作,直到用户提交或回滚事务;当收到回滚(rollback)时,extract撤销这些记录。当收到(commit)操作后,extract进程记录保存这些操作到一个或多个trail文件里并以队列的形式发送到目标端,以确保数据传输速度和数据的一致性。
Trail为了持续地提取与复制数据库变化,GoldenGate 将捕获到的数据变化临时存放在磁盘上的一系列文件中,这些文件就叫做 Trail 文件。这些文件可以在源端上也可以在目标端上,也可以在中间系统上,这依赖于选择哪种配置情况。在数据库源端上的叫做Local Trail或Extract Trail或Source Trail,在目标端的叫做 Remote Trail。
trail文件是一种Golden Gate特有的文件,具有自己的元数据。在每个文件或者每条记录上,都有一个”头”记录。为了追踪事务和保证数据一致性,采用CSN(Commit Sequece Number)这个概念,把CSN写到检查点文件(checkpoint)和trail文件中。CSN类似Oracle中的SCN,在SQLserver复制中用虚拟日志文件号,虚拟日志段号和虚拟日志记录号的拼接形成。
trail文件可以在进程需要时使用ADD RMTTRAIL or ADD EXTTRAIL命令添加创建,文件名为11个字符,在创建时指定两个字符然后由GoldenGate填充另外九个序列字符,序列字符从000000000到999999999,若文件到达99999999后,会从00000000继续开始,之前的文件会被清理。比如创建时指定了两个字符为’tr’,那么GoldenGate会自动创建从tr000000001开始的文件保存抽取捕获的数据;文件名是唯一的,默认保存在GoldenGate_home/dirdat目录下。
Data pumpData Pump运行在数据库源端,是第二种类型的GoldenGate extract配置,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端。如果不使用Data Pump,extract进程必须发送抽取捕获的操作数据到目标端trail;如果配置了Data Pump,extract进程抽取捕获数据写入到trail,Data pump读取trail并且通过网络发送trail到目标端trail,data pump 加强了源端和目标端抽取捕获数据的可用性。
pump进程的主要优点:
1)保护网络传输失败和目标端失败。
2)可以实现复杂的数据过滤和转换。
3)可以结合多个数据源到目标端。
4)可以同步一个源数据到多个目标端。
Collectorcollector是目标端后台进程,默认情况下,源端extract进程初始化TCP/IP连接到目标端的collector进程,但是因为GoldenGate是可配置的,所以有些时候可能需要在目标端配置和初始化collector,比如目标端同步时区,但是源端的时区小于目标端的情况下。
collector的功能:1.根据源端extract进程的请求,扫描和绑定可用的端口给mgr主进程分配给请求的extract进程;2.接收源端extract抽取trail并写入到目标端的trail文件;当源端发出网络请求时mgr自动启动collector后台进程,所以GoldeGate用户是不可以与它交互的。collector只能同时接受一个extract进程信息(一对一)并且随着extract的终止而终止。
ReplicatReplicat进程运行在数据库目标端,负责读取目标端的trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中(或hdfs,kafka,hbase等大数据组件中)。
就像 Extract 进程一样,也可以配置 Replicat 进程来完成如下工作:
1)初始化数据装载:对于初始化数据装载,Replicat 进程应用数据到目标对象或者路由它们到一个高速的 Bulk-load 工具上。
2)数据同步,将 Extract 进程捕获到的提交了的事务应用到目标数据库中。
Replicat 进程的状态包括Stopped(正常停止),Starting(正在启动),Running(正在运行),Abended(Abnomal End的缩写,标示异常结束)。
CheckpointCheckpoint存储从文件读取和写入的检测点位置,用于还原和恢复数据,Checkpoint确保发生变化并提交(commit)的数据被extract抽取捕获和被replicat进程应用到目标端;保证在系统、网络或者GoldenGate需要重启进程时发生的错误不会导致数据丢失;在复杂的同步配置中checkpoints启用多个extract和replicat进程从同一个trail集中读取数据
checkpoint信息会默认存储在goldengate的子目录dirchk中。在目标端除了checkpoint文件外,我们也可以通过配置通过额外checkpoint table来存储replicat的checkpoint信息。

6.OGG的主要目录结构

dirchk:检查点文件,记录了该进程的检查点信息
dirdat:trail日志文件,存放接收的日志文件
dirdef:用来存放通过DEFGEN工具生成的源或目标端数据定义文件
dirpcs:用来存放进程状态文件
dirprm:用来存放参数文件,该进程所配置的参数(edit param 进程名就是配置该文件)
dirrpt:用来存放进程报告(report)文件,可以查看该进程运行时的报错信息等(view report 进程名就是看该文件)
dirsql:用来存放SQL脚本文件
dirtmp:当事物所需要的内存超过已分配内存时,缺省存在此目录


http://www.ppmy.cn/ops/142222.html

相关文章

单元测试,集成测试,系统测试的区别是什么?

实际的测试工作当中,我们会从不同的角度对软件测试的活动进行分类,题主说的“单元测试,集成测试,系统测试”,是按照开发阶段进行测试活动的划分。这种划分完整的分类,其实是分为四种 “单元测试&#xff0c…

代码随想录第43天

300.最长递增子序列 # Dynamic programming. class Solution:def lengthOfLIS(self, nums: List[int]) -> int:if not nums: return 0dp [1] * len(nums)for i in range(len(nums)):for j in range(i):if nums[j] < nums[i]: # 如果要求非严格递增&#xff0c;将此行 …

基于PLC的工业搬运机器人设计

摘要 随着科技的不断发展&#xff0c;自动化技术的智能化越来越能体现出在工业生产当中的重要性&#xff0c;提高了我们的生产效率。自动化控制的设备可以代替人工进行全天候不间断工作&#xff0c;很大程度上解放了劳动力降低了人工成本。机器人一直以来都是科技发展前沿自动…

【5】数据分析基础(series2)

前面&#xff0c;我们了解了Series这种数据结构&#xff0c;学习了如何创建一个Series。 接下来&#xff0c;我们学习访问Series的数据的两种方式&#xff1a; 1. 位置索引访问 2. 索引标签访问 访问Series的数据 1. 位置索引访问 这种访问方式和列表相同&#xff0c;是基于…

jvm结构介绍

Java虚拟机&#xff08;JVM&#xff09;是Java平台的核心组件&#xff0c;它负责将Java字节码转换为机器码 1. 类加载子系统&#xff08;Class Loading Subsystem&#xff09;&#xff1a; • 负责将Java类加载到JVM中。这包括从文件系统、网络或其他来源读取.class文件&#x…

六、nginx负载均衡

负载均衡&#xff1a;将四层或者七层的请求分配到多台后端的服务器上。 从而分担整个业务的负载。提高系统的稳定性&#xff0c;也可以提高高可用&#xff08;备灾&#xff0c;其中一台后端服务器如果发生故障不影响整体业务&#xff09;. 负载均衡的算法 round robin 轮询 r…

IDEA关闭注释折叠

参考&#xff1a;IDEA关闭注释折叠(注释doc的rendered view模式)_idea toggle rendered view-CSDN博客

ansible自动化运维(四)jinjia2模板

Jinjia2模板 前面说到playbook组成的时候&#xff0c;有介绍到template模块&#xff0c;而template模块对模板文件进行渲染时&#xff0c;使用的就是jinja2模板引擎&#xff0c;jinja2本身就是基于python的模板引擎&#xff0c;所以下面先来了解一下jinjia2模板的一些用法 基…