GoldenGate for Big Data - Oracle Object Storageへのレプリケーション (2022/05/31)

GoldenGate for Big Data - Oracle Object Storageへのレプリケーション (2022/05/31)

https://eloi-lopes29.medium.com/goldengate-for-big-data-replication-to-oracle-object-storage-7dfcd8d2bc63

投稿者:Eloi Lopes


Oracle Object Storageは、あらゆる種類のファイルを、あらゆる形式で保存することができます。データサイエンス、ETL、データウェアハウスプロジェクトの中心的なデータソースとして使用することができます。


今回は、1つのソース(MySQL)からObject Storageにデータを格納したいと思います。データをリアルタイムで取得するために、2つのGoldenGateインスタンスをデプロイする必要があります。1つは非オラクル(MySQL)用のGoldenGateで、もう1つはBig Data用のGoldenGateです。


GoldenGate Marketplaceのイメージを使用しています。Oracle Cloud Infrastructure (OCI)にアクセスできない場合は、無料のアカウントを作成し、さまざまなサービスを試すことができます。


MySQL以外のソースを使用している場合でも、このチュートリアルに沿って全く同じ設定を行うことができますので、問題ありません。


前提条件


  •     GoldenGate for MySQLが稼働しており、1つのExtractが設定されている。
  •     GoldenGate for Big Data版が稼働していること





GoldenGate for Big Dataへの対応


GoldenGateをOracle Object Storageと連携させるためには、主に2つの要件があります。


  1.     OCIへのクレデンシャル
  2.     Java SDKのインストール


OCIクレデンシャルが既に作成されている場合は、設定ファイルにコピー&ペーストするだけで、このステップはスキップできます。まだお持ちでない方は、このまま読み進めてください。


まず、API署名キーを生成する必要があります。GoldenGate for Big Dataインスタンスで、API署名キーを生成します。

mkdir .oci
#Generate SSH key
openssl genrsa -out ~/.oci/oci_api_key.pem
chmod go-rwx ~/.oci/oci_api_key.pem openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem cat ~/.oci/oci_api_key_public.pem
#copy the public key


OCIアカウントにアクセスし、右上のプロフィールイメージをクリックし、ユーザー名の後にクリックします。



Add API Keysをクリックして、公開鍵を貼り付けます。追加すると、このようなテキストが表示されます。

[DEFAULT]
user=ocid1.user.oc1..aaa....
fingerprint=4d:4a:...
tenancy=ocid1.tenancy.oc1..aaaa...
region=eu-frankfurt-1
key_file=#TO DO


テキストをコピーして、GoldenGate for Big Dataに戻り、新しいファイル(Config)に追加します。

-bash-4.2$ pwd
/home/opc/.oci
vi config
#paste
[DEFAULT]
user=ocid1.user.oc1..aaaaa..
fingerprint=4d:4a:...
tenancy=ocid1.tenancy.oc1..aa...
region=eu-frankfurt-1
key_file=/home/opc/.oci/oci_api_key_public.pem


次に、Java SDKをインストールします。

sudo yum-config-manager --enable ol7_developer
sudo yum install java-oci-sdk


終了しました。



MySQLからObject Storageへのデータ送信

GoldenGate for Big Data証明書


GoldenGateのMySQLにアクセス権を与え、データをGoldenGateのBig Dataに送信するためには、MySQLに証明書を設定する必要があります。まず、Big Dataインスタンスから証明書を収集しましょう。GoldenGate Big Dataにアクセスし、「https」横のロックをクリックし、詳細情報、「証明書を表示」します(Firefoxを使用しているので、他のブラウザでは異なる可能性があります)。この構成の詳細については、Sydney Nurseの記事(Oracle GoldenGate MSA Marketplace間のレプリケーション・パス)を参照してください。



この2つの証明書をダウンロードしてください。



GG Big Dataインスタンスに移動し、/etc/nginx/ogg.pemにある証明書をコピーします。


GG Big Dataインスタンスで、配布パス用のユーザーを新規に作成します。




MySQL for GoldenGateの設定


まず、/etc/hostsを編集して、このようなGG Big Dataインスタンスのエントリを追加します。

#you can copy and past from GG Big Data instance hosts file:
<private ip> ogg21cbigdata.sub12151446000.vcneloi.oraclevcn.com ogg21cbigdata


GG MySQLインスタンスに移動し、Certificate Managementをクリックします。



クライアント証明書を新規に追加します。


クライアント証明書


  1.     証明書 PEM - "chain "で終わる証明書
  2.     秘密鍵 - ogg.pem
  3.     CA証明書 - チェーンなし


すべてアップロードする必要があります。



CA証明書については、末尾が "chain "のものを追加してください。



ここで、配信パスで使用するGG MySQL上のクレデンシャルを追加する必要があります。GG Big Dataで行ったのと同じユーザー名とパスワードを追加します。



[配信サービス]に移動して、このような新しい配信パスを追加してください。



これで、作成と実行ができるはずです。




Object Storageへのレプリカを作成


GG for Big Dataにアクセスし、レプリカットの追加をクリックし、"Classic Replicat"を選択します。



パラメータファイルでは、ソースからスキーマを選択し、ターゲットとしてそれはあなたが何をすることができます。Object Storageにその名前でフォルダが作成されます。



プロパティでこの設定を追加します

# Properties file for Replicat OBJ
#File Writer Handler Template
gg.handlerlist=filewriter
gg.handler.filewriter.type=filewriter
gg.handler.filewriter.mode=op
gg.handler.filewriter.pathMappingTemplate=./dirout
gg.handler.filewriter.stateFileDirectory=./dirsta
gg.handler.filewriter.fileNameMappingTemplate=${fullyQualifiedTableName}_${currentTimestamp}.json
gg.handler.filewriter.inactivityRollInterval=10s
gg.handler.filewriter.finalizeAction=none
gg.handler.filewriter.format=json
gg.handler.filewriter.format.metaColumnsTemplate=${objectname[table]},${optype[op_type]},${timestamp[op_ts]},${currenttimestamp[current_ts]},${position[pos]}
gg.handler.filewriter.partitionByTable=true
gg.handler.filewriter.rollOnShutdown=true
gg.handler.filewriter.eventHandler=oci
#The OCI Event handler
gg.eventhandler.oci.type=oci
#TODO: Set the OCI properties
gg.eventhandler.oci.configFilePath=~/.oci/config
gg.eventhandler.oci.profile=DEFAULT
gg.eventhandler.oci.namespace=<namespace of Object Storage>
gg.eventhandler.oci.region=eu-frankfurt-1 #your region
gg.eventhandler.oci.compartmentID=<compartmen ID where of Bucket>
gg.eventhandler.oci.pathMappingTemplate=${schemaName}
gg.eventhandler.oci.bucketMappingTemplate=<The bucket name>
gg.eventhandler.oci.fileNameMappingTemplate=${tableName}_${currentTimestamp}.txt
gg.eventhandler.oci.finalizeAction=NONE
goldengate.userexit.writers=javawriter
#TODO: Uncomment and set the proxy settings if required.
#gg.eventhandler.oci.proxyServer=
#gg.eventhandler.oci.proxyPort=
#TODO: Set the OCI client libraries in the classpath.
#VERY IMPORTANT - include the JAR files of the Oracle Cloud #Infrastructure Java SDK
gg.classpath=/usr/lib64/java-oci-sdk/third-party/lib/*:/usr/lib64/java-oci-sdk/lib/*
jvm.bootoptions=-Xmx512m -Xms32m




パラメータ "gg.handler.filewriter.inactivityRollInterval" は、最後に挿入されたレコードの10秒後に新しいファイルを作成するため、非常に重要です。詳しくは、Deniz Sendil 氏のブログ記事をご覧ください。


ご覧のように、ファイルはObject Storageに作成されます。



あなたのお役に立てれば幸いです。何か疑問があれば、LinkedInやMediumを通じて私に声をかけてください。


コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)