GoldenGate for Big Data - Oracle Object Storageへのレプリケーション (2022/05/31)
GoldenGate for Big Data - Oracle Object Storageへのレプリケーション (2022/05/31)
投稿者: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つの要件があります。
- OCIへのクレデンシャル
- 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/.ocivi 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をクリックします。
クライアント証明書を新規に追加します。
クライアント証明書
- 証明書 PEM - "chain "で終わる証明書
- 秘密鍵 - ogg.pem
- 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を通じて私に声をかけてください。
コメント
コメントを投稿