6.5.2. Debezium Oracle コネクターのデプロイ
Debezium Oracle コネクターをデプロイするには、Debezium コネクターアーカイブが含まれるカスタム Kafka Connect コンテナーイメージをビルドし、続いてこのコンテナーイメージをコンテナーレジストリーにプッシュする必要があります。その後、以下のカスタムリソース (CR) を作成する必要があります。
-
Kafka Connect インスタンスを定義する
KafkaConnect
CR。CR のimage
プロパティーは、Debezium コネクターを実行するために作成するコンテナーイメージの名前を指定します。この CR を、Red Hat AMQ Streams がデプロイされている OpenShift インスタンスに適用します。AMQ Streams は、Apache Kafka を OpenShift に取り入れる Operator およびイメージを提供します。 Debezium Oracle コネクターを定義する
KafkaConnector
CR。この CR をKafkaConnect
CR を適用するのと同じ OpenShift インスタンスに適用します。.Prerequisites
.Prerequisites
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Oracle Database が稼働し、Oracle を設定して Debezium コネクターと連携する 手順が完了済みである必要があります。
- AMQ Streams が OpenShift にデプロイされ、Apache Kafka および Kafka Connect を実行している。詳細は、『Deploying and Upgrading AMQ Streams on OpenShift』を参照してください。
- Podman または Docker がインストールされている。
-
Debezium コネクターを実行するコンテナーを追加する予定のコンテナーレジストリー(
quay.io
またはdocker.io
など)でコンテナーを作成および管理するアカウントおよびパーミッションがある。 Oracle JDBC ドライバーのコピーがある。ライセンス要件により、Debezium Oracle コネクターには必要な JDBC ドライバーファイルが含まれていません。
詳細は、Obtaining the Oracle JDBC driverを参照してください。
手順
Kafka Connect の Debezium Oracle コンテナーを作成します。
- Debezium Oracle コネクターアーカイブ をダウンロードします。
Debezium Oracle コネクターアーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。以下に例を示します。
./my-plugins/ ├── debezium-connector-oracle │ ├── ...
./my-plugins/ ├── debezium-connector-oracle │ ├── ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0
をベースイメージとして使用する Dockerfile を作成します。たとえば、ターミナルウィンドウに以下のコマンドを入力します。my-plugins
はプラグインディレクトリーの名前に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、現在のディレクトリーに
debezium-container-for-oracle.yaml
という名前の Docker ファイルを作成します。前の手順で作成した
debezium-container-for-oracle.yaml
Docker ファイルからコンテナーイメージをビルドします。ファイルを含むディレクトリーから、ターミナルウィンドウを開き、以下のコマンドのいずれかを入力します。podman build -t debezium-container-for-oracle:latest .
podman build -t debezium-container-for-oracle:latest .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker build -t debezium-container-for-oracle:latest .
docker build -t debezium-container-for-oracle:latest .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドは、
debezium-container-for-oracle
という名前のコンテナーイメージを構築します。カスタムイメージを quay.io などのコンテナーレジストリーまたは内部のコンテナーレジストリーにプッシュします。コンテナーレジストリーは、イメージをデプロイする OpenShift インスタンスで利用できる必要があります。以下のいずれかのコマンドを実行します。
podman push <myregistry.io>/debezium-container-for-oracle:latest
podman push <myregistry.io>/debezium-container-for-oracle:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker push <myregistry.io>/debezium-container-for-oracle:latest
docker push <myregistry.io>/debezium-container-for-oracle:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい Debezium Oracle KafkaConnect カスタムリソース (CR) を作成します。たとえば、以下の例のように
アノテーション
およびイメージ
プロパティーを指定するdbz-connect.yaml
という名前の KafkaConnect CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを入力して、
KafkaConnect
CR を OpenShift Kafka Connect 環境に適用します。oc create -f dbz-connect.yaml
oc create -f dbz-connect.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、Debezium コネクターを実行するために作成したイメージの名前を指定する Kafka Connect インスタンスを追加します。
Debezium Oracle コネクターインスタンスを設定する
KafkaConnector
カスタムリソースを作成します。コネクターの設定プロパティーを指定する a
.yaml
ファイルで Debezium Oracle コネクターを設定します。コネクター設定は、Debezium に対して、スキーマおよびテーブルのサブセットにイベントを生成するよう指示する可能性があり、または機密性の高い、大きすぎる、または不必要な指定のコラムで Debezium が値を無視、マスク、または切り捨てするようにプロパティーを設定する可能性もあります。以下の例では、port
1521
で Oracle ホスト IP アドレスに接続する Debezium コネクターを設定します。このホストにはORCLCDB
という名前のデータベースがあり、server1
はサーバーの論理名です。Oracle
inventory-connector.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表6.6 コネクター設定の説明 項目 説明 1
Kafka Connect サービスに登録する場合のコネクターの名前。
2
この Oracle コネクタークラスの名前。
3
Oracle インスタンスのアドレス。
4
Oracle インスタンスのポート番号。
5
コネクターのユーザーの作成 で指定した Oracle ユーザーの名前。
6
コネクターのユーザーの作成 で指定した Oracle ユーザーのパスワード。
7
変更をキャプチャーするデータベースの名前。
8
コネクターが変更をキャプチャーする Oracle のプラグ可能なデータベースの名前。コンテナーデータベース (CDB) のインストールでのみ使用されます。
9
コネクターが変更をキャプチャーする Oracle データベースサーバーの namespace を識別および提供する論理名。
10
DDL ステートメントをデータベース履歴トピックに書き込み、復元するためにコネクターによって使用される Kafka ブローカーのリスト。
11
コネクターが DDL ステートメントを書き、復元するデータベース履歴トピックの名前。このトピックは内部使用のみを目的としており、コンシューマーが使用しないようにしてください。
Kafka Connect でコネクターインスタンスを作成します。たとえば、
KafkaConnector
リソースをinventory-connector.yaml
ファイルに保存した場合、以下のコマンドを実行します。oc apply -f inventory-connector.yaml
oc apply -f inventory-connector.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドは
inventory-connector
を登録し、コネクターはKafkaConnector
CR に定義されているserver1
データベースに対して実行を開始します。コネクターが作成され、起動されたことを確認します。
Kafka Connect ログ出力を表示して、コネクターが作成され、指定データベースの変更のキャプチャーが開始されたことを確認します。
oc logs $(oc get pods -o name -l strimzi.io/cluster=my-connect-cluster)
oc logs $(oc get pods -o name -l strimzi.io/cluster=my-connect-cluster)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ログの出力を確認し、Debezium が初回のスナップショットを実行することを確認します。ログには、以下のメッセージと同様の出力が表示されます。
... INFO Starting snapshot for ... ... INFO Snapshot is using user 'c##dbzuser' ...
... INFO Starting snapshot for ... ... INFO Snapshot is using user 'c##dbzuser' ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コネクターがエラーがなく正常に起動すると、コネクターが変更をキャプチャーする各テーブルのトピックが作成されます。ダウンストリームアプリケーションは、これらのトピックをサブスクライブできます。
以下のコマンドを実行して、コネクターによってトピックが作成されたことを検証します。
oc get kafkatopics
oc get kafkatopics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Debezium Oracle コネクターに設定できる設定プロパティーの完全リストは Oracleコネクタープロパティー を参照してください。
結果
コネクターが起動すると、コネクターが設定された Oracle データベースの整合性スナップショットが実行されます。その後、コネクターは行レベルの操作のデータ変更イベントの生成を開始し、変更イベントレコードを Kafka トピックにストリーミングします。