一.前言

  首先要学习一下ogg的所有进程,看着这张图来学习

 
  • Manager进程是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。在目标端和源端有且只有一个manager进程
  • Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。Extract的作用可以按照阶段来划分为:
    •   初始时间装载阶段:在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据
    •   同步变化捕获阶段:初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)
  • Data Pump进程运行在数据库源端,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在抽 取完数据以后,直接投递到目标端,生成远程trail文件。
  • Collector进程与Data Pump进程对应 的叫Server Collector进程,这个进程不需要引起我的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。它运行在目标端,其 任务就是把Extract/Pump投递过来的数据重新组装成远程ttrail文件。
  • Replicat进程,通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中。

  关于OGG的Trail文件:

  • 为了更有效、更安全的把数据库事务信息从源端投递到目标端。GoldenGate引进trail文件的概念。前面提到extract抽取完数据以 后 Goldengate会将抽取的事务信息转化为一种GoldenGate专有格式的文件。然后pump负责把源端的trail文件投递到目标端,所以源、 目标两端都会存在这种文件。
  • trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传 。

二.源端配置

2.1 版本选择

  因为源端是抽取mysql db,所以要选择正确的ogg版本,这里选择的是:

2.2 解压安装

  我安装的目录是/opt/ogg目录,所以就解压在这个目录

  1. tar xf ggs_Linux_x64_MySQL_64bit.tar -C /opt/ogg

  然后执行ogg命令

  1. ./ggsci

  最初进入后需要初始化,执行命令

  1. GGSCI (miaojiaxing-VirtualBox) > create subdirs
  2.  
  3. Creating subdirectories under current directory /opt/ogg
  4.  
  5. Parameter file /opt/ogg/dirprm: created.
  6. extract extkafka
  7. Report file /opt/ogg/dirrpt: created.
  8. Checkpoint file /opt/ogg/dirchk: created.
  9. Process status files /opt/ogg/dirpcs: created.
  10. SQL script files /opt/ogg/dirsql: created.
  11. Database definitions files /opt/ogg/dirdef: created.
  12. Extract data files /opt/ogg/dirdat: created.
  13. Temporary files /opt/ogg/dirtmp: created.
  14. Credential store files /opt/ogg/dircrd: created.
  15. Masterkey wallet files /opt/ogg/dirwlt: created.
  16. Dump files /opt/ogg/dirdmp: created.

2.3 配置管理进程

  1. GGSCI (miaojiaxing-VirtualBox) > edit param mgr
  2.  
  3. port
  4. dynamicportlist -
  5. autorestart er *, retries , waitminutes
  6. purgeoldextracts /home/goldengate/dirdat/*,usecheckpoints, minkeepdays 2
  • port mgr:进程的默认监听端口
  • dynamicportlist:动态端口列表,指定mgr端口不可用的时候从这个列表中选择一个,最大范围256个
  • AUTORESTART:重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟
  • PURGEOLDEXTRACTS即TRAIL文件的定期清理

  start mgr可以启动该进程,info mgr可查看该进程状态。之后配置的进程都可以用这个命令,名字换一下即可。

  1. GGSCI (miaojiaxing-VirtualBox) > start mgr
  2. Manager started.
  3.  
  4. GGSCI (miaojiaxing-VirtualBox) > info mgr
  5. Manager is running (IP port miaojiaxing-VirtualBox., Process ID ).

2.4 配置抽取进程

  1. GGSCI (miaojiaxing-VirtualBox) > edit param extkafka
  2.  
  3. extract extkafka
  4. sourcedb alcmydata@172.29.30.6: userid ogg password ogg
  5. exttrail /opt/ogg/dirdat/me
  6. TranLogOptions AltLogDest /var/log/mysql/mysql-bin.index
  7. table alcmydata.alc_asset_equity;

  添加extract进程

  1. GGSCI (miaojiaxing-VirtualBox) > add extract extkafka,tranlog,begin now
  2. EXTRACT added.

  添加trail文件与extract进程绑定

  1. GGSCI (miaojiaxing-VirtualBox) > add exttrail /opt/ogg/dirdat/me,extract extkafka
  2. EXTTRAIL added.

  这里需要注意的mysql的my.cnf log-bin配置,因为对接mysql的时候,需要依赖mysql的binlog日志

2.5 配置传递进程

  1. GGSCI (miaojiaxing-VirtualBox) > edit param mcp1
  2.  
  3. extract mcp1
  4. passthru
  5. sourcedb alcmydata@172.29.30.6: userid ogg password ogg
  6. rmthost 172.29.30.79,mgrport ,compress
  7. rmttrail /opt/ogg/dirdat/mp
  8.  
  9. dynamicresolution
  10. numfiles
  11. table alcmydata.alc_asset_equity;
  • passthru:使用pump逻辑传输
  • rmthost:目标端ogg的mgr服务地址
  • rmttrail:目标端trail文件存储位置以及名称

  分别添加本地trail文件和目标端trail文件绑定到mcp1进程

  1. GGSCI (miaojiaxing-VirtualBox) > add extract mcp1,exttrailsource /opt/ogg/dirdat/me
  2. EXTRACT added.
  3.  
  4. GGSCI (miaojiaxing-VirtualBox) > add rmttrail /opt/ogg/dirdat/mp,extract mcp1
  5. RMTTRAIL added.

2.6 创建表的定义文件

  ogg对接mysql和oracle不同的地方是ogg获取mysql表结构的方法,需要配置defgen文件

  1. GGSCI (miaojiaxing-VirtualBox) > edit param defgen
  2.  
  3. defsfile ./dirdef/gmqdsjsjp.def
  4. sourcedb alcmydata@172.29.30.6: userid ogg password ogg
  5. table alcmydata.alc_asset_equity;

  然后生成表定义文件传给目标库目录

  1. ./defgen paramfile ./dirprm/defgen.prm
  2. scp /opt/ogg/dirdef/gmqdsjsjp.def miaojiaxing2@172.29.30.79:/opt/ogg/dirdef/

三.目标端配置

3.1 配置管理进程

  和源端配置是一样的

  1. GGSCI (miaojiaxing-VirtualBox) > edit param mgr
  2.  
  3. port
  4. dynamicportlist -
  5. autorestart er *, retries , waitminutes
  6. purgeoldextracts /home/goldengate/dirdat/*,usecheckpoints, minkeepdays 2

3.2 配置replicate进程

  1. GGSCI (miaojiaxing-VirtualBox) > edit param rekafka
  2.  
  3. REPLICAT rekafka
  4. sourcedefs /opt/ogg/dirdef/gmqdsjsjp.def
  5. TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props
  6. REPORTCOUNT EVERY MINUTES, RATE
  7. GROUPTRANSOPS
  8. MAP alcmydata.alc_asset_equity, TARGET alcmydata.alc_asset_equity;
  • TARGETDB LIBFILE:定义kafka的一些配置文件
  • REPORTCOUNT:复制任务的报告生成频率
  • GROUPTRANSOPS:以事务传输
  • MAP 源端和目标端的映射关系

  添加进程

  1. add replicat rekafka exttrail /opt/ogg/dirdat/mp,checkpointtable test_ogg.checkpoint

3.3 配置kafka.props

  1. gg.handlerlist=kafkahandler
  2. gg.handler.kafkahandler.type=kafka
  3. gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer.properties
  4. gg.handler.kafkahandler.topicMappingTemplate=test_ogg
  5. gg.handler.kafkahandler.format=json
  6. gg.handler.kafkahandler.mode=op
  7. gg.classpath=/ggwork/kafka/2.2./libexec/libs/*

custom_kafka_producer.properties文件如下

  1. bootstrap.servers=172.29.31.214:
  2. acks=
  3. compression.type=gzip
  4. reconnect.backoff.ms=
  5. value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
  6. key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
  7. batch.size=
  8. linger.ms=

3.4 发车

  进程启动顺序为:源mgr——目标mgr——源extract——源pump——目标replicate来完成。

  源端:

  1. start mgr
  2. start extkafka
  3. start mcp1

  目标端:

  1. start mgr
  2. start rekafka

  然后update一条数据,你可以用最简单的term来查看结果(当然可以用个java的demo):

  1. kafka-console-producer --broker-list localhost: --topic test_ogg

  结果:

  1. {"table":"alcmydata.alc_asset_equity","op_type":"I","op_ts":"2019-08-08 15:12:56.973193","current_ts":"2019-08-08T17:39:28.281000","pos":"","after":{"ID":,"CREATED_AT":"2019-08-07 17:19:04.000000","CREATED_BY":"c3lz","UPDATED_AT":"2019-08-07 17:19:04.000000","UPDATED_BY":"c3lz","HOLD_SHARE":66300.0000000000,"HOLD_AMOUNT":,"FROZEN_SHARE":,"FROZEN_AMOUNT":,"ENTRUST_AMOUNT":,"TRANSIT_AMOUNT":,"INVEST_AMOUNT":66300.00,"ACHIEVED_AMOUNT":,"PRODUCT_ID":,"PROD_CATEGORY":"RDAx","USER_ID":,"ACCOUNT_ID":,"DAILY_INCOME":null,"INCOME_DATE":null,"TOTAL_INCOME":null,"VERSION":,"REMARK":"MQ==","UNPAID_INCOME":,"ADVANCE_ACHIEVED_AMOUNT":null}}
  2. {"table":"alcmydata.alc_asset_equity","op_type":"U","op_ts":"2019-08-08 18:11:50.968788","current_ts":"2019-08-08T18:11:57.664000","pos":"","before":{},"after":{"ID":,"HOLD_SHARE":20000.0000000000}}

参考

https://blog.csdn.net/TXBSW/article/details/87915942

http://www.voidcn.com/article/p-cadcicbv-bm.html

https://dongkelun.com/2018/05/23/oggOracle2Kafka/

https://docs.oracle.com/goldengate/bd123010/gg-bd/index.html

https://www.jianshu.com/p/eefbb731cc67

Oracle GoldenGate mysql To Kafka上车记录的更多相关文章

  1. 为Oracle GoldenGate准备数据库

    了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...

  2. Streaming data from Oracle using Oracle GoldenGate and Kafka Connect

    This is a guest blog from Robin Moffatt. Robin Moffatt is Head of R&D (Europe) at Rittman Mead, ...

  3. Oracle to MySQL Goldengate实现增量迁移

    第一部分:安装和基本配置 一.环境 两台rhel 6.4虚拟机,分别异构oracle到mysql数据库同步测试Ip:192.168.0.23 部署oracle 11.2.0.4,goldgate 12 ...

  4. Oracle GoldenGate对接 Oracle 11g和Kafka

    本文主要是向读者介绍如何通过 ogg 为 oracle 数据库的变更操作实时同步到大数据产品 kafka 上. 开始介绍前,先为读者介绍一下环境背景 机器ip 和其对应的服务 192.168.88.1 ...

  5. Oracle使用goldengate分别向Oracle和mysql双路的单向复制

    一.Oracle分别向Oracle和mysql双路的单向复制是在: ORACLE-mysql的单向复制基础上做的.http://blog.csdn.net/q947817003/article/det ...

  6. Oracle GoldenGate 异构平台同步(Mysql到Oracle)

    一.OGG安装配置(源端) 1.OGG下载 http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.htm ...

  7. oracle 、mysql、 sql server使用记录

    oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...

  8. Oracle GoldenGate to Confluent with Kafka Connect

    Confluent is a company founded by the team that built Apache Kafka. It builds a platform around Kafk ...

  9. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

随机推荐

  1. 仿照Spring自己实现有各种通知的AOP,AOP实现的步骤分解

    一.需求: 仿照Spring的AOP写的 MyAOP 2.0,有环绕通知.前置通知.后置通知.返回通知.异常通知等. 已实现:①通过动态代理+通知的注解类,实现了前置通知.后置通知等各种通知:②切点( ...

  2. Java 中的字符串(String)与C# 中字符串(string)的异同

    1. C# 中比较两个字符串字面量是否相等,可以使用 “==”比较运算符,是因为string 类型重写(override)了“==” 和 “!=” 运算符,在使用“==” 和 “!=” 进行字符串比较 ...

  3. scrapy实战6爬取IT桔子国内所有融资公司:

    爬取融资公司,融资公司简介,融资时间,轮次,融资额,投资方,股权占比以及融资公司完整融资历史 如图 源码地址:https://github.com/huwei86/spiderITjuzi

  4. C#使用sqlite-net搭建简易的ORM

    SQLite简易版ORM 首先打开项目,使用nuget搜索sqlite-net,如下图: 下载完成后,我们会多出两个文件,SQLite.cs和SQLiteAsync.cs. 我们新建一个文件夹SQLi ...

  5. Perm排列计数(新博客试水,写的不好,各路大神见谅)

    B. Perm 排列计数 内存限制:512 MiB 时间限制:1000 ms 标准输入输出   题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i&l ...

  6. Java设计模式学习笔记(四) 抽象工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ...

  7. jekyll搭建个人博客1

    目录 配置环境 使用模板 配置环境 简介 jekyll是一个简单的免费的,生成静态网页的工具,不需要数据库支持.但是可以配合第三方服务,例如Disqus.最关键的是jekyll可以免费部署在Githu ...

  8. linux 不重启识别新添加的硬盘

    1.fdisk -l 看有没有新的磁盘 oebiotech@hadoop08:/media/nbc9$ sudo fdisk -l |grep sdl 2.查看主机总线 oebiotech@hadoo ...

  9. Java开发面试题汇总 -- 精选版(附答案)

    最近事情太多,没太时间写公众号.今天抽空再整理整理面试中的那点事吧,帮助那些正在找工作或想跳槽找工作的兄弟姐妹们. 前面我己写过多篇推文,相信关注此公众号的伙伴们已经了解掌握了不少.从目前流行的开发技 ...

  10. Ubuntu安装Sublime Text 3

    终端命令行安装: Install the GPG key: wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo a ...