经典案例

通过 Oracle GoldenGate S3 处理程序将数据流式传输到 Amazon S3 进行实

datetime

2026-01-27 14:54:09

阅读数量

19

将数据实时流式传输到Amazon S3以进行实时分析

关键要点

现代业务应用程序对实时分析的数据准确性与及时性要求越来越高,需要高效可扩展的数据存储解决方案。使用Oracle GoldenGate能够帮助企业实现数据实时复制及转换,此指南将介绍如何将数据从关系数据库流式传输到Amazon S3。配置步骤包括安装及配置Oracle GoldenGate,提取数据,以及使用S3处理程序将数据复制到Amazon S3。

在现代商业环境中,准确及时的数据支持着企业的决策过程。为了适应对实时分析日益增长的需求,企业需要高效且可扩展的数据存储解决方案。由于数据通常存储在不同的数据集中,因此需要将其整合以提取有意义的见解。在此背景下,复制工具帮助企业实时移动数据,并在必要时进行转换,以实现数据的整合。

本文将提供一份详细指南,介绍如何安装和配置Oracle GoldenGate,使其能够将关系数据库中的数据流式传输至Amazon Simple Storage ServiceAmazon S3,以便进行实时分析。

Oracle GoldenGate与大数据适配器

Oracle GoldenGate是一款用于实时数据集成和复制的工具,广泛应用于灾难恢复、数据迁移和高可用性场景。它能够实时捕捉和应用事务性更改,最小化延迟,并保持目标系统与源数据库的同步。此工具支持数据转换,允许在复制期间进行修改,并适用于各种数据库系统,包括SQL Server、MySQL和PostgreSQL。GoldenGate还支持灵活的复制拓扑结构,如单向、双向和多主配置。使用GoldenGate之前,请确保已查看并遵守许可协议。

Oracle GoldenGate for Big Data提供能够简化将不同来源的数据实时集成到大数据服务如Hadoop、Apache Kafka和Amazon S3的适配器。您可以根据特定要求配置这些适配器,控制数据捕获、转换和交付过程,以支持批量和实时数据集成模式。

GoldenGate提供特殊工具,称为S3事件处理程序,以集成Amazon S3进行数据复制。这些处理程序使GoldenGate能够读取和写入S3的存储桶选项,适用于在本地、云和混合环境下的部署。

解决方案概述

下图展示了我们的解决方案架构:

在本帖中,我们将引导您完成以下高级步骤:

在Amazon Elastic Compute CloudAmazon EC2上安装GoldenGate软件。配置GoldenGate以从Oracle数据库提取数据并保存至跟踪文件。使用GoldenGate for Big Data S3处理程序将数据复制到Amazon S3。

先决条件

您必须满足以下先决条件:

拥有一个Oracle Database 19c或更高版本,可以在Amazon Relational Database Service (Amazon RDS) for Oracle或Amazon EC2上使用。确保已完成为Oracle GoldenGate准备数据库的步骤。已安装Java开发工具包并配置ORACLEHOME。拥有一个现有或新的S3存储桶。有关创建新S3存储桶的信息,请参见创建存储桶。拥有一个AWS身份与访问管理IAM用户。您可以使用临时凭证,详细信息请参见使用临时凭证访问AWS资源。确保您具有正确的显示设置,并可使用xclock。有关详细信息,请参见如何启用X11转发。

在Amazon EC2上安装GoldenGate软件

您需要在EC2实例上运行GoldenGate,这些实例必须具备满足预期复制量的处理器、内存和存储资源。有关详细信息,请参见操作系统要求。确定CPU和内存需求后,选择一个当前代EC2实例类型来运行GoldenGate。

以下公式可用于估计所需的跟踪文件空间:

trail disk space = transaction log volume in 1 hour x number of hours down x 04

当EC2实例启动并运行后,从Oracle GoldenGate下载页面下载以下GoldenGate软件:

GoldenGate 21300GoldenGate for Big Data 21c

请按照以下步骤将文件从本地计算机上传并安装到EC2实例。确保在开始会话之前,您的IP地址已包含在EC2实例安全组的入站规则中。

bashscp i pemkeypem 213000fboggsLinuxx64Oracleshiphomezip ec2user@hostname/ssh i pemkeypem ec2user@hostnameunzip 213000fboggsLinuxx64Oracleshiphomezip

安装GoldenGate 21300

请按照以下步骤在EC2实例上安装GoldenGate 213:

创建一个目录以安装GoldenGate软件并运行安装程序:

bashmkdir /u01/app/oracle/product/OGGDBORACLE/fboggsLinuxx64Oracleshiphome/Disk1ls lrt

您应能看到如下输出:

plaintexttotal 8drwxrxrx 4 oracle oinstall 187 Jul 29 2021 installdrwxrxrx 12 oracle oinstall 4096 Jul 29 2021 stagerwxrxrx 1 oracle oinstall 918 Jul 29 2021 runInstallerdrwxrwxrx 2 oracle oinstall 25 Jul 29 2021 response

运行安装程序:

bash[oracle@hostname Disk1] /runInstaller

安装程序将启动并检查临时空间和交换空间的可用性。若条件满足,GUI窗口将弹出供您安装软件。

按照GUI中的说明完成安装过程,并提供您所创建的目录路径作为GoldenGate的家目录。

GoldenGate软件安装完成后,您可以创建GoldenGate进程以读取源中的数据。首先,配置OGG EXTRACT。

为源Oracle数据库创建一个提取参数文件,以下是示例文件内容:

bash[oracle@hostname Disk1] vi eabcprm

Extract group nameEXTRACT EABCSETENV (TNSADMIN = /u01/app/oracle/product/1930/network/admin)

Extract database user loginUSERID ggsadmin@mydb PASSWORD

Local trail on the remote hostEXTTRAIL /u01/app/oracle/product/OGGDBORACLE/dirdat/eaIGNOREREPLICATESGETAPPLOPSTRANLOGOPTIONS EXCLUDEUSER ggsadminTABLE scottemp

使用以下命令在GoldenGate提示符下添加EXTRACT:

bashGGSCIgt ADD EXTRACT EABC TRANLOG BEGIN NOW

添加EXTRACT后,使用info all检查正在运行程序的状态。您将看到EXTRACT的状态为STOPPED,这是预期的。

启动EXTRACT进程,如下图所示:

该状态将变为RUNNING。不同状态概述:

STARTING 进程正在启动。RUNNING 进程已启动并正常运行。STOPPED 进程已正常停止控制方式或因错误停止。ABENDED 进程已非控制方式停止,称为ABEND,表示异常终止。

日本加速器下载

此操作将开始提取过程,并在提取参数文件中提到的位置创建跟踪文件。

您可以使用命令stats ltltgroupnamegtgt对此进行验证,如下图所示。

安装GoldenGate for Big Data 21c

在此步骤中,我们将在与安装GoldenGate经典架构相同的EC2实例上安装GoldenGate for Big Data。

创建一个目录以安装GoldenGate for Big Data软件。按照以下步骤复制zip文件:

bashmkdir /u01/app/oracle/product/OGGBIGDATAunzip 214000ggsLinuxx64BigData64bitziptar xvf ggsLinuxx64BigData64bittar

GGSCIgt CREATE SUBDIRSGGSCIgt EDIT PARAM MGRPORT 7801

GGSCIgt START MGR

这将启动MANAGER程序。现在您可以安装REPLICAT运行所需的依赖项。

进入/u01/app/oracle/product/OGGBIGDATA/DependencyDownloader,运行带有最新不兼容版本的AWS Java SDK的sh文件。此脚本下载AWS SDK,提供连接AWS云的客户端库。

bash[oracle@hostname DependencyDownloader] /awssh 112748

配置S3处理程序

要配置一个GoldenGate REPLICAT将数据发送到S3桶,您需要设置一个REPLICAT参数文件和一个定义如何处理数据并发送到Amazon S3的属性文件。

AWSACCESSKEYID和AWSSECRETACCESSKEY是您IAM用户的访问密钥和秘密访问密钥。请勿在参数和属性文件中硬编码凭据或安全密钥。可以使用多种方法实现此目的,例如:

bash

通过 Oracle GoldenGate S3 处理程序将数据流式传输到 Amazon S3 进行实

!/bin/bash

使用已经在OS中设置的环境变量

export AWSACCESSKEYID=AWSACCESSKEYIDexport AWSSECRETACCESSKEY=AWSSECRETACCESSKEYexport AWSREGION=yourawsregion

您可以在您的shell配置文件例如bashrc、bashprofile、zshrc中设置这些环境变量,或使用安全的方法临时设置它们:

bashexport AWSACCESSKEYID=youraccesskeyidexport AWSSECRETACCESSKEY=yoursecretaccesskey

配置属性文件

为S3处理程序创建一个属性文件。该文件定义了GoldenGate将如何与您的S3桶交互。确保您添加了正确的参数,如下所示。

以下是S3处理程序属性文件的示例dirprm/reps3properties:

bash[oracle@hostname dirprm] cat reps3propertiesgghandlerlist=filewriter

gghandlerfilewritertype=filewritergghandlerfilewriterfileRollInterval=60sgghandlerfilewriterfileNameMappingTemplate={tableName}{currentTimestamp}jsongghandlerfilewriterpathMappingTemplate=/diroutgghandlerfilewriterstateFileDirectory=/dirstagghandlerfilewriterformat=jsongghandlerfilewriterfinalizeAction=renamegghandlerfilewriterfileRenameMappingTemplate={tableName}{currentTimestamp}jsongghandlerfilewritereventHandler=s3

goldengateuserexitwriters=javawriter

TODO 设置S3事件处理程序请根据需要更新

ggeventhandlers3type=s3ggeventhandlers3region=euwest1ggeventhandlers3bucketMappingTemplate=s3bucketnameggeventhandlers3pathMappingTemplate={tableName}{currentTimestamp}ggeventhandlers3accessKeyId=AWSACCESSKEYIDggeventhandlers3secretKey=AWSSECRETACCESSKEY

ggclasspath=/u01/app/oracle/product/OGGBIGDATA/dirprm//u01/app/oracle/product/OGGBIGDATA/DependencyDownloader/dependencies/awssdk112748/gglog=log4jggloglevel=DEBUG

javawriterbootoptions=Xmx512m Xms32m Djavaclasspath=ggjava/ggjavajar DawsaccessKeyId=myaccesskeyid DawssecretKey=mysecretkey

javawriterbootoptions=Xmx512m Xms32m Djavaclasspath=ggjava/ggjavajar

配置GoldenGate REPLICAT

在GoldenGate for Big Data主目录的/dirprm中创建参数文件:

bash[oracle@hostname dirprm] vi rps3prmREPLICAT rps3 命令添加REPLICAT add replicat fw exttrail AdapterExamples/trail/trSETENV(GGSJAVAUSEREXITCONF = dirprm/rps3props)TARGETDB LIBFILE libggjavaso SET property=dirprm/rps3propsREPORTCOUNT EVERY 1 MINUTES RATEMAP SCOTTEMP TARGET gghandlers3handler

bash[oracle@hostname OGGBIGDATA] /ggsciGGSCI gt add replicat rps3 exttrail /dirdat/tr/eaReplicat added

GGSCI gt info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGREPLICAT STOPPED RPS3 000000 000039

GGSCI gt start Sending START request to Manager Replicat group RPS3 starting

现在您已成功启动了Replicat。您可以通过运行info和stats命令并提供Replicat名称来验证,如下图所示。

要确认文件是否已复制到S3存储桶中,请打开Amazon S3控制台并访问您创建的存储桶。您将看到表数据已以JSON文件格式复制到Amazon S3中。

最佳实践

确保遵循性能、压缩和安全方面的最佳实践。

以下是有关性能的最佳实践:

通过使用高性能存储系统优化跟踪文件的存储,以改善读/写操作。有关更多信息,请参见Amazon EBS优化实例类型。监控并调整与跟踪文件管理相关的GoldenGate参数,例如跟踪文件大小、跟踪文件数量和跟踪文件轮换设置,以应对工作负载特征。监控GoldenGate处理以识别并解决性能瓶颈。使用Amazon CloudWatch监控GoldenGate日志也是一种有效的策略。根据需求考虑使用GoldenGate的不同类型的Replicats,例如,使用并行Replicat以平行处理来提高重负载性能。

关于压缩的最佳实践:

启用跟踪文件的压缩,以减少存储需求并改善网络传输性能