欢迎访问宙启技术站
智能推送

oracle数据如何通过goldengate实时同步到kafka消息队列中

发布时间:2023-05-16 10:55:40

Oracle是一款广泛使用的关系型数据库管理系统,在实际的生产环境中,由于业务需求的复杂及数据的多样性,可能需要将Oracle中的数据实时同步到其他的数据存储介质中,如Kafka消息队列。而Goldengate是Oracle官方提供的一款数据同步工具,它支持将Oracle数据库中的数据实时同步到Kafka消息队列中,本文就从以下两个方面进行阐述:

一、配置Goldengate实现Oracle数据同步到Kafka

1.下载与安装:

首先需要到Oracle官网下载Goldengate的安装包,然后进行安装。安装完成后,需要在Oracle数据库中创建一个用户用来进行Goldengate的配置。

2.配置Kafka参数:

修改Goldengate根目录下的dirprm目录下的Kafka配置文件KAFKA.properties,主要修改的参数有Kafka的broker地址、topic名称等。

kafka.bootstrap.servers=localhost:9092

##kafka topic name

kafka.translator.kafka_topic=[Your_Topic_Name]

##kafka producer parameters

kafka.producer.security.protocol=PLAINTEXT

kafka.producer.batch.size=0

kafka.producer.linger.ms=50

kafka.producer.compression.type=none

3.配置Oracle参数:

将Goldengate的存储引擎设置为增量提取,并且设置源端数据库连接,此处需要修改全局配置文件ggs_global. properties中的参数。

##GGSCI CONFIGURE GLOBAL PARAMETERS

GGSCI> edit params ./GLOBALS

[...]

##Oracle环境变量设置

SetEnv (ORACLE_SID=[Your_Goldengate_SID])

##最大文件大小限制

extractmaxfilesize 20g

##文件分割方式

extractrollover none

##存储引擎设置

##Oracle EXTTRAIL option

extract ext1,exttrail ./dirdat/aa,

beginscn 3439,checkpointtable xml.CHECKPOINTTABLE,quiet

##数据库连接设置

##Oracle User ID and Password for Extract using SOURCEISTABLE

userid [Your_Oracle_User]/[Your_Oracle_Password], encryptkey [Your_Key_Value]

4. 启动Goldengate提取进程:

启动Goldengate提取进程,指定Oracle为源端,Kafka为目的端,并且指定同步的表以及字段。

GGSCI > start extract ext1

5.启动Goldengate传输进程:

启动Goldengate传输进程,从Kafka获取数据并将其写入到本地的文件中。

GGSCI > start replicat rep1

二、实现Oracle数据同步到Kafka

1.操作Oracle数据库中的数据:

在Oracle数据库中对指定表的数据进行了新增、修改或删除操作,导致表中的数据发生了变化。

2.Goldengate的抓取进程:

Goldengate的抓取进程监听到了Oracle数据库中的数据变化,并将变化的数据封装成了Kafka消息格式,推送到Kafka消息队列中。

3.Kafka消息队列:

在Kafka消息队列中,监听到了Goldengate推送的消息,将其存在Kafka中。

4.Goldengate的同步进程:

Goldengate的同步进程监听到了Kafka消息队列中的消息,将其取出来,并将消息转换为SQL语句,在目标端的Oracle数据库中执行,从而完成了Oracle数据在Kafka消息队列中的实时同步。