Red Hat build of Debezium 2.1.4 のリリースノート
Red Hat build of Debezium の新機能
概要
第1章 Red Hat build of Debezium
Red Hat build of Debezium は、ハイブリッド環境およびマルチクラウド環境全体でコンテナーベースの統合サービスを作成、拡張、デプロイするための包括的な統合およびイベント処理技術です。Red Hat build of Debezium は、デジタル環境で必要となるアプリケーションとシステム間でデータを接続および共有するために組織が使用できる、アジャイルで API 中心の分散ソリューションを提供します。
Red Hat build of Debezium には、以下の機能が含まれています。
- リアルタイムのメッセージング
- データセンター間のメッセージストリーミング
- API の接続
- アプリケーションコネクター
- エンタープライズ統合パターン
- API 管理
- データの変換
- サービスの設定とオーケストレーション
関連情報
第2章 Debezium 2.1.4 リリースノート
Debezium は、分散型変更データキャプチャープラットフォームで、データベーステーブルで発生する行レベルの変更をキャプチャーし、対応する変更イベントレコードを Apache Kafka トピックに渡します。アプリケーションはこれらの 変更イベントストリーム を読み取りでき、変更イベントが発生した順にアクセスできます。Debezium は Apache Kafka 上に構築され、OpenShift Container Platform または Red Hat Enterprise Linux 上の AMQ Streams とデプロイおよび統合されます。
リリースの詳細は以下を参照してください。
2.1. Debezium データベースコネクター
Debezium は、以下の共通データベースの Kafka Connect をベースとしたコネクターを提供します。
- Db2
- MongoDB
- MySQL
- Oracle
- PostgreSQL
- SQL Server
2.1.1. コネクターの使用上の注意
Db2
-
Debezium Db2 コネクターには、Db2 JDBC ドライバー (
jcc-11.5.0.0.jar
) が含まれていません。必要な JDBC ドライバーをデプロイする方法は、デプロイメントの説明 を参照してください。 - Db2 コネクターには、Linux 用の Db2 の標準部分として利用できる抽象構文表記 (ASN) ライブラリーを使用する必要があります。
- ASN ライブラリーを使用するには、IBM InfoSphere Data Replication (IIDR) のライセンスが必要です。ライブラリーを使用するために IIDR をインストールする必要はありません。
-
Debezium Db2 コネクターには、Db2 JDBC ドライバー (
MongoDB
- 現在、MongoDB 4.2 で Debezium MongoDB コネクターのトランザクションメタデータ機能を使用することはできません。
Oracle
-
Debezium Oracle コネクターには、Oracle JDBC ドライバー (
ojdbc8.jar
) が含まれていません。必要な JDBC ドライバーをデプロイする方法は、デプロイメントの説明 を参照してください。
-
Debezium Oracle コネクターには、Oracle JDBC ドライバー (
PostgreSQL
-
Debezium PostgreSQL コネクターでは、PostgreSQL バージョン 10 以降のデフォルトである
pgoutput
論理デコーディング出力プラグインを使用する必要があります。
-
Debezium PostgreSQL コネクターでは、PostgreSQL バージョン 10 以降のデフォルトである
2.2. Debezium でサポートされる設定
サポートされるデータベースバージョンなど、Debezium でサポートされる設定の詳細は、Debezium 2.1.4 でサポートされる設定 のページを参照してください。
2.2.1. AMQ Streams API バージョン
Debezium は AMQ Streams 2.3 で実行されます。
AMQ Streams は、AMQ Streams カスタムリソースのスキーマを更新する v1beta2
API バージョンをサポートします。古い API バージョンは非推奨になりました。AMQ Streams 1.7 にアップグレードした後、AMQ Streams 1.8 以降にアップグレードする前に、API バージョン v1beta2
を使用するようにカスタムリソースをアップグレードする必要があります。
詳細は、Debezium ユーザーガイド を参照してください。
2.3. Debezium のインストールオプション
Debezium と AMQ Streams を OpenShift または Red Hat Enterprise Linux にインストールできます。
2.4. Debezium のバージョン 1.x から 2.1.4 へのアップグレード
現在のバージョンの Debezium には、以前のバージョンからアップグレードするときに特定の手順に従う必要がある変更が含まれています。詳細は、互換性を失わせる変更点 の一覧および アップグレード手順 を参照してください。
2.4.1. コネクターの Debezium 2.1.4 へのアップグレード
Debezium 2.1.4 は、新しい Debezium メジャーリリースバージョンの最初の Red Hat リリースです。Debezium 2.1.4 の変更の一部は、以前のバージョンの Debezium と後方互換性がありません。そのため、Debezium 1.x バージョンから 2.1.4 にアップグレードするときにデータを保持し、継続的な操作を確保するには、アップグレードプロセス時にいくつかの手動の手順を完了する必要があります。
大きな変更の 1 つは、一部のコネクターパラメーターの名前が変更されたことです。これらの変更に対応するには、設定プロパティーの更新 を確認し、コネクター設定に存在するプロパティーに注意してください。アップグレードする前に、各 Debezium コネクターの設定を編集して、変更されたプロパティーの新しい名前を追加します。アップグレードする前に、古いプロパティー名と新しいプロパティー名の両方が存在するように 1.x コネクターインスタンスの設定を編集します。アップグレード後に、古い設定オプションを削除できます。
前提条件
- Debezium には Kafka バージョン 3.3.1 まで互換性があります。これは、AMQ Streams 2.3 のデフォルトの Kafka バージョンです。
- Java 11 ランタイムが必要で、アップグレード前に利用できるようにする必要があります。AMQ Streams 2.3 は Java 11 をサポートします。新しいアプリケーションを開発する場合は、Java 11 を使用してください。Java 11 では、新しい String API や述語サポートの変更など、最新の言語更新を利用できます。また、Java のパフォーマンスの向上にもメリットがあります。Java 8 は AMQ Streams 2.3 ではサポート対象外になりました。
- 互換性を失わせる変更点リスト で後方互換性のない変更を確認します。
- 環境が Debezium 2.1.4 でサポートされる設定 に準拠していることを確認します。
手順
- OpenShift コンソールから、Kafka Connector YAML を確認し、Debezium 2.1.4 では有効ではなくなったコネクター設定を特定します。詳細は、表2.1「コネクター設定プロパティーの更新」 を参照してください。
- 設定を編集して、手順 1 で特定したプロパティーに相当する 2.x を追加し、古いプロパティー名と新しいプロパティー名の両方が存在するようにします。新しいプロパティーの値は、古いプロパティーに対して以前に指定された値に設定します。
- OpenShift コンソールから、Kafka Connect を停止してコネクターを正常に停止します。
- OpenShift コンソールから、Kafka Connect イメージ YAML を編集して、コネクター zip ファイルの Debezium 2.1.4.Final バージョンを参照します。
- OpenShift コンソールから、Kafka コネクター YAML を編集して、コネクターで無効になっている設定オプションを削除します。
- コードのストレージモジュール実装の依存関係に応じて、必要に応じてアプリケーションのストレージ依存関係を調整します。互換性を失わせる変更点 の一覧の Debezium ストレージ の変更 を参照してください。
- Kafka Connect を再起動して、コネクターを起動します。コネクターの再起動後に、2.1.4.Final コネクターは、アップグレード前にコネクターを停止した時点からイベントの処理を続行します。アップグレード前にコネクターが Kafka に書き込んだ変更イベントレコードは変更されません。
2.5. Debezium の新機能
Debezium 2.1.4 には、以下の更新が含まれています。
2.5.1. 互換性を失わせる変更点
Debezium 2.1.4 での次の変更は、コネクターの動作に大きな違いがあることを示しており、以前の Debezium バージョンと互換性のない設定を変更する必要があります。
- 複数のコネクターに適用される変更
- データベース履歴トピック
- データベーススキーマ履歴 トピックと呼ばれます。
- メモリーキューのオブジェクトサイズの制限
- サイズはリフレクションを使用して計算されなくなりました。代わりに、キュー制限はメッセージスキーマに基づいて推定されます。(DBZ-2766) (MongodB、MySQL、Oracle、PostgreSQL、SQL Server)
- コネクターメトリクスの公開
- Debezium は以前、スナップショット、ストリーミング、および履歴ベースの Bean の単一のタプルとしてコネクターメトリックを公開していました。今回のリリースにより、コネクターメトリクスがマルチパーティションスキームとして公開されるようになりました。その結果、メトリクス名およびそれらが公開される方法が変更になりました (DBZ-4726)。メトリックを収集するために Grafana、Prometheus、または同様の JMX フレームワークを使用する場合は、メトリクスを収集するためのプロセスを確認してください。
database.server.name
プロパティー- コネクター設定で使用されなくなりました。詳細は、表2.1「コネクター設定プロパティーの更新」 を参照してください。
- スキーマ定義
- 命名とバージョン管理で一貫性を確保するために、Debezium スキーマが一元的に定義されるようになりました (DBZ-4365、DBZ-5044)。スキーマレジストリーを使用する場合は、スキーマの互換性の問題が発生する可能性があります。
- Debezium ストレージの変更
-
以前のリリースでは、Debezium は debezium-core モジュールの一部としてオフセット、履歴、およびその他のデータの読み取りと保存をサポートしていました。このリリースには、ローカルファイルシステムまたは Kafka にデータを格納するための実装を備えた新しい
debezium-storage
モジュールが含まれています (DBZ-5229)。このアプローチで実装された拡張ポイントにより、今後他のストレージ実装を導入できます。アップグレードの一環として、コードに必要なストレージモジュールの実装によっては、アプリケーションの依存関係を調整する必要がある場合があります。 - 通信例外後の再起動
- 通信に関連する例外 (SqlException、IOException) が出力された後、デフォルトで、Debezium MongoDB、MySQL、PostgreSQL、および SQL Server コネクターが自動的に再起動するようになりました (DBZ-5244)。
skipped.operations
設定オプションのデフォルト値-
デフォルト値は
truncate
(DBZ-5497) (MongoDB、MySQL、Oracle、PostgreSQL、SQL Server) になりました。 schema.name.adjustment.mode
プロパティーのデフォルト値-
デフォルト値は
none
(DBZ-5541)になりました。以前のデフォルトオプションであるavro
は、Avro コンバーターを使用するお客様にとっては適切な選択でしたが、JSON コンバーターを使用する環境では混乱を招きました。今回の変更の一環として、sanitize.field.names
プロパティーが利用できなくなりました。 - * コネクター設定プロパティーの削除
Debezium 1.x バージョンで使用できたいくつかのプロパティーは有効ではなくなり、新しいプロパティーに置き換えられました。詳細は、以下の表を参照してください。
表2.1 コネクター設定プロパティーの更新 1.x プロパティー 2x で同等のプロパティー database.*
(パススルーデータベースドライバーのプロパティー) (DBZ-5043)driver.*
database.dbname
(SQL Server)database.names
database.history.consumer.*
(DBZ-5043)schema.history.internal.consumer.*
database.history.kafka.bootstrap.servers
(DBZ-5043)schema.history.internal.kafka.bootstrap.servers
database.history.kafka.topic
(DBZ-5043)schema.history.internal.kafka.topic
database.history.producer.*
(DBZ-5043)schema.history.internal.producer.*
database.server.name
(DBZ-5043)topic.prefix
mongodb.name
(MongoDB)topic.prefix
schema_blacklist
(DBZ-5045)schema_exclude_list
schema_whitelist
(DBZ-5045)schema_include_list
- MySQL コネクターに適用される変更
- MySQL コネクターはレガシー JDBC レガシーの日付/時間プロパティーはサポート対象外になりました (DBZ-4965)。
- MongoDB コネクターに適用される変更
- MongoDB コネクターは oplog から直接ストリーミングをサポートしなくなりました。変更ストリームは、MongoDB で変更データキャプチャーを実行するための優れたメカニズムです。コネクターは、oplog を直接読み取るのではなく、oplog データをキャプチャーしてデコードするタスクを MongoDB 変更ストリームに委任し、コレクション内で発生した変更をイベントストリームとして公開します。Debezium コネクターは、このストリームにサブスクライブして、ダウンストリームの変更を Kafka に配信します。変更ストリームへの移行には、非プライマリーノードからの変更をストリーミングする機能や、ダウンストリームコンシューマー向けの完全なドキュメント表現で更新イベントを発行する機能など、さまざまな利点があります。
-
設定プロパティー
mongodb.name
はtopic.prefix
プロパティーに置き換えられます。
- PostgreSQL コネクターに適用される変更
- SQL Server コネクターに適用される変更
-
SQL Server データベースで SSL が有効になっていない場合、または SSL を使用せずにデータベースに接続する場合は、コネクター設定で
database.encrypt
プロパティーの値をfalse
に設定して SSL を無効にします。 -
database.dbname
プロパティーはdatabase.names
プロパティーに置き換えられます。
-
SQL Server データベースで SSL が有効になっていない場合、または SSL を使用せずにデータベースに接続する場合は、コネクター設定で
2.5.2. 一般公開 (GA) にプロモートした機能
Debezium 2.1.4 リリースでは、次の機能がテクノロジープレビューから一般公開 (GA) にプロモートされます。
2.5.3. Debezium 機能の更新
この Debezium 2.1.4 リリースでは、次のリストの項目を含む、いくつかの機能の更新と修正が提供されます。
- MySQL コネクターは binlog 圧縮をサポートするようになりました。(DBZ-2663)
- "Streaming requested from LSN" 警告のログ出力を制限します。(DBZ-3007)
- MySQL コネクターパーサーに JSON_TABLE のサポートを実装します。(DBZ-3575)
- シグナルを送信することで、増分スナップショットを一時停止または停止できるようになりました。(DBZ-4251)
- ユーザーアカウントに必要な CDCReader パーミッションがない場合に、SQL Server コネクターが失敗するようになりました。(DBZ-4346)
- MongoDB コネクターはバイナリーペイロードをデコードできるようになりました。(DBZ-4600)
- 実行中の増分スナップショットを一時停止および再開できるようになりました。(DBZ-4727)
- 接続文字列 URI を指定することで、MongoDB 接続設定を指定できるようになりました。(DBZ-4733)
-
MongoDB コネクターの
field.exclude.list
プロパティーが、同じ名前を持つ異なるコレクションのフィールドで機能するようになりました。(DBZ-4846) -
PostgresSQL コネクターは、
PSQLException: This connection has been closed.
エラーの後に接続を再試行するようになりました。(DBZ-4948) - MySQL コネクターは、イベントヘッダーのタイムスタンプを履歴レコードに保存するようになりました。(DBZ-4998
- LogMiner バッチサイズは、デフォルトのサイズではなく、現在のバッチサイズに基づいて調整されるようになりました。(DBZ-5005)
- ByLogicalTableRouter SMT で キャッシュするエントリーの最大数 を設定できるようになりました。(DBZ-5072)
- 新しい拡張 API を使用すると、Debezium のバージョンを照会できます。(DBZ-5092)
-
ts_ms
フィールドをスキーマ変更イベントに追加して、イベントの発生時または処理時を識別します。DBZ-5098 -
MongoDB コネクターが oplog エントリーを変換するとき、
Document
ではなくRawBsonDocument
クラスを使用するようになりました。(DBZ-5113) - MySQL のコミットタイムスタンプ。(DBZ-5170)
- イベント SCN が Oracle イベントレコードに含まれるようになりました。(DBZ-5225)
-
UnknownTopicOrPartitionException
の発生を回避するために、database.history.kafka.create.timeout.ms
を設定して、コネクターが Kafka 履歴トピックの作成を待機する時間を指定できるようになりました。(DBZ-5249) - プライマリーキーを変更した後、LOB タイプのデータはソースとシンクの間で整合性が保たれるようになりました。(DBZ-5295)
- MySQL コネクターは、binlog を読み取ろうとしたときにエラーを受け取った後、再試行するようになりました。DBZ-5333
- 増分スナップショットの作成中に、Oracle コネクターは、名前にピリオドが含まれるデータベースからのイベントを正しく解析するようになりました。(DBZ-5336)
- スキーマ接頭辞を使用した PostgreSQL のデフォルト値関数呼び出しをサポートします。(DBZ-5340)
-
MySQL コネクターは、MySQL 8.x の未署名の
tinyint
データ型を変換できません。(DBZ-5343) - Oracle コネクターは、キャプチャーされたテーブルに対してサポートされていない LogMiner 操作を検出すると、警告をログに記録します。(DBZ-5351)
- Oracle コネクターは、固有のインデックスがシステム生成列と非システム生成列の両方に基づいている場合に、NullPointerException を出力します。(DBZ-5356)
- 列ハッシュ v2 が MySQL コネクターで機能しなかった問題を修正しました。(DBZ-5366)
- ネスト化された配列で、最初の配列に要素が含まれていない送信イベントペイロードにおいて JSON 拡張に失敗するという問題が修正されました。(DBZ-5367)
- MongoDB 互換の AWS DocumentDB を使用する場合に発生する MongoDB コネクター接続エラーが修正されました。(DBZ-5371)
- Oracle コネクターが CommitScn を予期しない形式で記録する問題を修正しました。DBZ-5381
- PostgreSQL コネクターエラー「org.postgresql.util.PSQLException: Bad value for type timestamp/date/time: CURRENT_TIMESTAMP」が修正されました。(DBZ-5384)
-
previousID
プロパティーが履歴トピックにない MySQL コネクターの問題を修正しました。DBZ-5386 - Check 制約では、スキーマ変更イベントの制約に基づいて列が導入されました。(DBZ-5390)
- PostgreSQL コネクターが PRIMARY KEY として参照される列をキャプチャーするが、一致する列がテーブルに定義されていない場合に発生する問題が修正されました。(DBZ-5398)
-
プラグイン可能なデータベースで Oracle を使用する場合の
signal.data.collection
に関するドキュメントを明確化しました。(DBZ-5399) - PostgreSQL コネクターは GMT を使用してタイムスタンプを指定するようになりました。(DBZ-5403)
-
アドホックおよび増分スナップショットは、キャプチャーするデータのサブセットを指定するための
additional-condition
パラメーターをサポートするようになりました。(DBZ-5327) - ストリーミング中に Oracle コネクターがサポートされていない非リレーショナルテーブルを適切に処理できるようにするロジックを追加しました。(DBZ-5441)
- SQL Server コネクタータスクは、「Socket closed」の例外の後に再起動するようになりました。(DBZ-5478)
- 正規表現トピックの命名ストラテジーの一意性キーフィールド/値を拡張します。(DBZ-5480)
- MySqlErrorHandler が SocketException を処理するようになりました。(DBZ-5486)
- MySQL コネクターは、データベース列のコメントをコネクタースキーマに追加するようになりました。(DBZ-5489)
- スキーマ履歴メッセージにデフォルト値と列挙値を公開します。DBZ-5511
- BinaryHandlingMode の BASE64_URL_SAFE をサポートします。(DBZ-5544)
- ソースデータベースでオフセットをコミットするときにパーティションを提供します。(DBZ-5557)
-
従来のスナップショットプロセス設定
source.ts_ms
です。(DBZ-5591) - 論理名の設定をクリーンアップします。(DBZ-5594)
- MySQL コネクターは TRUNCATE イベントをキャプチャーするようになりました。(DBZ-5610)
- ドキュメントに含まれる include/exclude オプションのセマンティクスを明確にします。(DBZ-5625)
-
変更イベントを発行する際に
before
フィールドを含めるように MongoDB コネクターを設定できるようになりました。(DBZ-5628) - PostgreSQL コネクターでの非増分スナップショットのログ機能が強化されました。(DBZ-5639)
- REGEXP_LIKE disjunctions を減らして、LogMiner クエリーのパフォーマンスを向上させます。(DBZ-5648)
- MongoDB コネクターがハートビートメッセージをサーバーに送信する頻度を設定できます。(DBZ-5736)
- トピック名をサニタイズする機能を強化しました。(DBZ-5790)
-
PostgreSQL コネクターが処理済みレコードの LSN をデータベースに自動的にコミットしないように、
flush.lsn.source
を設定できるようになりました。(DBZ-5811) -
ComputePartition
SMT を使用して、特定のフィールドに基づいて特定のトピックパーティションにデータをルーティングできるようになりました。(DBZ-5847) -
event.processing.failure.handling.mode
を設定して、PostgreSQL コネクターが失敗した LSN チェックをスキップできるようになりました。DBZ-6012 - 変更の頻度が低いプラガブルデータベースデプロイメント (CDB) で Oracle コネクターを使用する場合は、コネクターオフセットが正しく進むようになりました。(DBZ-6125)
2.6. テクノロジープレビューの機能
テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でのテクノロジープレビュー機能の実装は推奨しません。テクノロジープレビュー機能は、近々発表予定の製品イノベーションをリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。サポート範囲の詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Debezium には、次のテクノロジープレビュー機能が含まれています。
- 並列初期スナップショット
-
必要に応じて、
snapshot.max.threads
プロパティーを 1 より大きい値に設定すると、初期スナップショットの実行時に複数のスレッドを使用するように SQL ベースのコネクターを設定できます。 - MongoDB コネクターのアドホックおよび増分スナップショット
- 以前にスナップショットをキャプチャしたテーブルのスナップショットを再実行するためのメカニズムを提供します。
- CloudEvents コンバーター
-
CloudEvents 仕様に準拠する変更イベントレコードが出力されます。Cloud Events の変更イベントのエンベロープは、JSON または Avro であり、各エンベロープタイプは
data
フォーマットとして JSON または Avro をサポートしています。CloudEvents の変更イベントエンベロープは Avro エンコーディングをサポートしています。変更イベントエンベロープは JSON または Avro を使用でき、各エンベロープタイプはdata
形式として JSON または Avro をサポートしています。 - コンテンツベースルーティング
- イベントの内容に基づいて、選択したイベントを特定のトピックに再ルーティングするためのメカニズムを提供します。
- カスタム開発コンバーター
- デフォルトのデータ型変換がニーズを満たさない場合は、コネクターで使用するカスタムコンバータを作成できます。
- フィルター SMT
- コネクターがブローカに送信するレコードのサブセットを指定できます。
- MongoDB コネクターの シグナリング
- コネクターの動作変更やテーブルの アドホックスナップショット の開始など、1 回限りのアクションをトリガーするためのメカニズムを提供します。
- Oracle コネクターでの
BLOB
、CLOB
、およびNCLOB
データ型 の使用 - Oracle コネクターは、Oracle のラージオブジェクトタイプを使用できます。