Oracle GoldenGate mysql To Kafka上车记录
一.前言
首先要学习一下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目录,所以就解压在这个目录
tar xf ggs_Linux_x64_MySQL_64bit.tar -C /opt/ogg
然后执行ogg命令
./ggsci
最初进入后需要初始化,执行命令
GGSCI (miaojiaxing-VirtualBox) > create subdirs Creating subdirectories under current directory /opt/ogg Parameter file /opt/ogg/dirprm: created.
extract extkafka
Report file /opt/ogg/dirrpt: created.
Checkpoint file /opt/ogg/dirchk: created.
Process status files /opt/ogg/dirpcs: created.
SQL script files /opt/ogg/dirsql: created.
Database definitions files /opt/ogg/dirdef: created.
Extract data files /opt/ogg/dirdat: created.
Temporary files /opt/ogg/dirtmp: created.
Credential store files /opt/ogg/dircrd: created.
Masterkey wallet files /opt/ogg/dirwlt: created.
Dump files /opt/ogg/dirdmp: created.
2.3 配置管理进程
GGSCI (miaojiaxing-VirtualBox) > edit param mgr port
dynamicportlist -
autorestart er *, retries , waitminutes
purgeoldextracts /home/goldengate/dirdat/*,usecheckpoints, minkeepdays 2
- port mgr:进程的默认监听端口
- dynamicportlist:动态端口列表,指定mgr端口不可用的时候从这个列表中选择一个,最大范围256个
- AUTORESTART:重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟
- PURGEOLDEXTRACTS即TRAIL文件的定期清理
start mgr可以启动该进程,info mgr可查看该进程状态。之后配置的进程都可以用这个命令,名字换一下即可。
GGSCI (miaojiaxing-VirtualBox) > start mgr
Manager started. GGSCI (miaojiaxing-VirtualBox) > info mgr
Manager is running (IP port miaojiaxing-VirtualBox., Process ID ).
2.4 配置抽取进程
GGSCI (miaojiaxing-VirtualBox) > edit param extkafka extract extkafka
sourcedb alcmydata@172.29.30.6: userid ogg password ogg
exttrail /opt/ogg/dirdat/me
TranLogOptions AltLogDest /var/log/mysql/mysql-bin.index
table alcmydata.alc_asset_equity;
添加extract进程
GGSCI (miaojiaxing-VirtualBox) > add extract extkafka,tranlog,begin now
EXTRACT added.
添加trail文件与extract进程绑定
GGSCI (miaojiaxing-VirtualBox) > add exttrail /opt/ogg/dirdat/me,extract extkafka
EXTTRAIL added.
这里需要注意的mysql的my.cnf log-bin配置,因为对接mysql的时候,需要依赖mysql的binlog日志
2.5 配置传递进程
GGSCI (miaojiaxing-VirtualBox) > edit param mcp1 extract mcp1
passthru
sourcedb alcmydata@172.29.30.6: userid ogg password ogg
rmthost 172.29.30.79,mgrport ,compress
rmttrail /opt/ogg/dirdat/mp dynamicresolution
numfiles
table alcmydata.alc_asset_equity;
- passthru:使用pump逻辑传输
- rmthost:目标端ogg的mgr服务地址
- rmttrail:目标端trail文件存储位置以及名称
分别添加本地trail文件和目标端trail文件绑定到mcp1进程
GGSCI (miaojiaxing-VirtualBox) > add extract mcp1,exttrailsource /opt/ogg/dirdat/me
EXTRACT added. GGSCI (miaojiaxing-VirtualBox) > add rmttrail /opt/ogg/dirdat/mp,extract mcp1
RMTTRAIL added.
2.6 创建表的定义文件
ogg对接mysql和oracle不同的地方是ogg获取mysql表结构的方法,需要配置defgen文件
GGSCI (miaojiaxing-VirtualBox) > edit param defgen defsfile ./dirdef/gmqdsjsjp.def
sourcedb alcmydata@172.29.30.6: userid ogg password ogg
table alcmydata.alc_asset_equity;
然后生成表定义文件传给目标库目录
./defgen paramfile ./dirprm/defgen.prm
scp /opt/ogg/dirdef/gmqdsjsjp.def miaojiaxing2@172.29.30.79:/opt/ogg/dirdef/
三.目标端配置
3.1 配置管理进程
和源端配置是一样的
GGSCI (miaojiaxing-VirtualBox) > edit param mgr port
dynamicportlist -
autorestart er *, retries , waitminutes
purgeoldextracts /home/goldengate/dirdat/*,usecheckpoints, minkeepdays 2
3.2 配置replicate进程
GGSCI (miaojiaxing-VirtualBox) > edit param rekafka REPLICAT rekafka
sourcedefs /opt/ogg/dirdef/gmqdsjsjp.def
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props
REPORTCOUNT EVERY MINUTES, RATE
GROUPTRANSOPS
MAP alcmydata.alc_asset_equity, TARGET alcmydata.alc_asset_equity;
- TARGETDB LIBFILE:定义kafka的一些配置文件
- REPORTCOUNT:复制任务的报告生成频率
- GROUPTRANSOPS:以事务传输
- MAP 源端和目标端的映射关系
添加进程
add replicat rekafka exttrail /opt/ogg/dirdat/mp,checkpointtable test_ogg.checkpoint
3.3 配置kafka.props
gg.handlerlist=kafkahandler
gg.handler.kafkahandler.type=kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer.properties
gg.handler.kafkahandler.topicMappingTemplate=test_ogg
gg.handler.kafkahandler.format=json
gg.handler.kafkahandler.mode=op
gg.classpath=/ggwork/kafka/2.2./libexec/libs/*
custom_kafka_producer.properties文件如下
bootstrap.servers=172.29.31.214:
acks=
compression.type=gzip
reconnect.backoff.ms=
value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
batch.size=
linger.ms=
3.4 发车
进程启动顺序为:源mgr——目标mgr——源extract——源pump——目标replicate来完成。
源端:
start mgr
start extkafka
start mcp1
目标端:
start mgr
start rekafka
然后update一条数据,你可以用最简单的term来查看结果(当然可以用个java的demo):
kafka-console-producer --broker-list localhost: --topic test_ogg
结果:
{"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}}
{"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上车记录的更多相关文章
- 为Oracle GoldenGate准备数据库
了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...
- 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, ...
- Oracle to MySQL Goldengate实现增量迁移
第一部分:安装和基本配置 一.环境 两台rhel 6.4虚拟机,分别异构oracle到mysql数据库同步测试Ip:192.168.0.23 部署oracle 11.2.0.4,goldgate 12 ...
- Oracle GoldenGate对接 Oracle 11g和Kafka
本文主要是向读者介绍如何通过 ogg 为 oracle 数据库的变更操作实时同步到大数据产品 kafka 上. 开始介绍前,先为读者介绍一下环境背景 机器ip 和其对应的服务 192.168.88.1 ...
- Oracle使用goldengate分别向Oracle和mysql双路的单向复制
一.Oracle分别向Oracle和mysql双路的单向复制是在: ORACLE-mysql的单向复制基础上做的.http://blog.csdn.net/q947817003/article/det ...
- Oracle GoldenGate 异构平台同步(Mysql到Oracle)
一.OGG安装配置(源端) 1.OGG下载 http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.htm ...
- oracle 、mysql、 sql server使用记录
oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...
- 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 ...
- 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...
随机推荐
- 常用的方法论-Q12
- MYSQL事务、锁
MYSQL事务 事务: 原子性 : 要么都执行,要么都不执行. 一致性: 结果要么都成功 ,要么都失败. 隔离性: 事务之间是互不干扰的 持久性: 事务一旦被提交,对数据库的改变是永久性的. 事务的隔 ...
- 02(e)多元无约束优化问题- 梯度的两种求解方法以及有约束转化为无约束问题
2.1 求解梯度的两种方法 以$f(x,y)={{x}^{2}}+{{y}^{3}}$为例,很容易得到: $\nabla f=\left[ \begin{aligned}& \frac{\pa ...
- [AI开发]目标跟踪之速度计算
基于视频结构化的应用中,目标在经过跟踪算法后,会得到一个唯一标识和它对应的运动轨迹,利用这两个数据我们可以做一些后续工作:测速(交通类应用场景).计数(交通类应用场景.安防类应用场景)以及行为检测(交 ...
- JavaScript 之迭代方法
前言:关于 JS 中为数组定义的迭代方法,我最开始是在<JavaScript高级程序设计>中学习的,然后...我并没有看懂,后来翻阅各个大佬的博客,稍微理解了那么一丢丢.以下就是我的一点见 ...
- Spring Boot 2.0 迁移指南
![img](https://mmbiz.qpic.cn/mmbiz_jpg/1flHOHZw6Rs7yEJ6ItV43JZMS7AJWoMSZtxicnG0iaE0AvpUHI8oM7lxz1rRs ...
- .NET多线程之调用上下文CallContext
命名空间:System.Runtime.Remoting.Messaging 类型完全限定名称:System.Runtime.Remoting.Messaging.CallContext 官方介绍:h ...
- [记录]inotifywait+rsync脚本和sersync2服务检测的脚本
1)inotifywait+rsync脚本: #!/bin/bash src=/data/ # 需要同步的源路径 des=data # 目标服务器上 rsync --daemon 发布的名称,rsyn ...
- Excel催化剂开源第39波-json字符串解释的超能类库
对一般VBA开发群体来说,处理json.xml结构的数据源,在VB6的世界里,是一件非常不容易的事情,隐约记得当年自己从哪里找到了一个使用字典实现的json解释的函数,实在非常稀有. 在.Net的世界 ...
- 关键字static、final
final final能修饰类.修饰方法.能修饰属性. 修饰类:该类不能被继承. 修饰方法:该方法不能被重写.所以abstract和final不能同时用 修饰属性/变量:该属性/变量为常量,该值不能再 ...