Red Hat build of Debezium 2.7.3 のリリースノート


Red Hat build of Debezium 2.7.3

Red Hat build of Debezium の新機能

Red Hat build of Debezium Documentation Team

概要

Red Hat build of Debezium 製品を説明し、このリリースの新機能に関する最新情報を提供します。

第1章 Debezium 2.7.3 リリースノート

Debezium は、分散型変更データキャプチャープラットフォームで、データベーステーブルで発生する行レベルの変更をキャプチャーし、対応する変更イベントレコードを Apache Kafka トピックに渡します。アプリケーションはこれらの 変更イベントストリーム を読み取りでき、変更イベントが発生した順にアクセスできます。Debezium は Apache Kafka 上に構築されており、Streams for Apache Kafka を使用して OpenShift Container Platform または Red Hat Enterprise Linux 上にデプロイおよび統合されています。

リリースの詳細は以下を参照してください。

1.1. Debezium データベースコネクター

Debezium は、Kafka Connect に基づいたソースコネクターとシンクコネクターを提供します。コネクターは、次の一般的なデータベースで使用できます。

ソースコネクター
  • Db2
  • MariaDB (テクノロジープレビュー)
  • MongoDB
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server
シンクコネクター
  • JDBC シンクコネクター

1.1.1. コネクターの使用上の注意

Db2
  • Debezium Db2 コネクターには、Db2 JDBC ドライバー (jcc-11.5.0.0.jar) が含まれていません。必要な JDBC ドライバーをデプロイする方法は、Db2 コネクターのデプロイメント手順 を参照してください。
  • Db2 コネクターには、Linux 用の Db2 の標準部分として利用できる抽象構文表記 (ASN) ライブラリーを使用する必要があります。
  • ASN ライブラリーを使用するには、IBM InfoSphere Data Replication (IIDR) のライセンスが必要です。ライブラリーを使用するために IIDR をインストールする必要はありません。
Oracle
PostgreSQL
  • Debezium PostgreSQL コネクターでは、PostgreSQL バージョン 10 以降のデフォルトである pgoutput 論理デコーディング出力プラグインを使用する必要があります。

1.2. Debezium でサポートされる設定

サポートされるデータベースバージョンの情報を含む Debezium でサポートされる構成の詳細は、Debezium 2.7.3 サポートされる構成 のページを参照してください。

1.2.1. Streams for Apache Kafka API バージョン

Debezium は Streams for Apache Kafka 2.7 上で実行されます。

Streams for Apache Kafka は、AMQ Streams カスタムリソースのスキーマを更新する v1beta2 API バージョンをサポートしています。古い API バージョンはサポートされていません。

1.3. Debezium のインストールオプション

Streams for Apache Kafka を使用して OpenShift または Red Hat Enterprise Linux 上に Debezium をインストールできます。

1.4. Debezium 2.7.3 の機能および改善点

1.4.1. 互換性を失わせる変更点

重大な変更は、コネクターの動作に大きな違いをもたらし、Debezium の以前のバージョンと互換性のない設定の変更が必要になります。

Debezium 2.7.3 では、次のコンポーネントに影響する重大な変更が導入されています。

以前の Debezium リリースにおける重大な変更については、Debezium 2.5.4 リリースノート を参照してください。

1.4.1.1. すべてのコネクターに関連する重大な変更

次の重大な変更はすべてのコネクターに適用されます。

1.4.1.1.1. 設定可能なクエリータイムアウトプロパティー (query.timeout.ms) (DBZ-7616)

データベース通信エラーなどの特定の状況では、JDBC クエリーが永続的なハング状態になることがあります。この問題を軽減するために、Debezium では、コネクターがクエリー応答を待機する時間を設定できる query.timeout.ms プロパティーが提供されるようになりました。タイムアウト処理を無効にするには、値を 0 に設定します。デフォルト値は 600000 ミリ秒 (600 秒) です。

1.4.1.1.2. タイムスタンプコンバーターの改善 (DBZ-7022)

Debezium TimezoneConverter SMT を使用すると、送信されるペイロードの時間値を指定されたタイムゾーンに変換できます。元の実装では、ペイロードの before 部分または after 部分内の値の変換を許可するように特に制限されていました。コンバーターを使用して、source 情報ブロックの ts_ms など、メタデータ内の他の時間ベースのフィールドを変換できるようになりました。
この変更により、コネクターを実行する JVM のタイムゾーン設定がソースデータベースサーバーの設定と一致せず、envelope ts_ms および source ts_ms 値の差にエラーが発生する場合に、ラグメトリクスの計算が改善されます。TimezoneConverter を使用してメタデータフィールドを変換し、一貫したタイムゾーンを使用するようにコネクターを設定すると、これら 2 つのフィールド間の正確な遅延時間をより簡単に計算できます。

1.4.1.1.3. シグナルテーブル watermark メタデータ

MySQL コネクターを読み取り専用モードで実行する場合を除き、増分スナップショットを実行するには、トランザクションログに記録されたデータと変更境界を調整するために、オープンマーカーとクローズマーカーを書き込むシグナルテーブルが必要です。場合によっては、スナップショットウィンドウがいつ開かれ、いつ閉じられたかを記録しておくと役立つことがあります。
Debezium では、次の例に示すように、シグナルテーブルの data 列にこれらのシグナルマーカーに関する詳細が提供されるようになりました。

例1.1 ウィンドウオープンマーカー

Copy to Clipboard Toggle word wrap
{"openWindowTimestamp": "<window-open-time>"}

例1.2 ウィンドウクローズマーカー

Copy to Clipboard Toggle word wrap
{"openWindowTimestamp": "<window-open-time>", "closeWindowTimestamp": "<window-close-time>"}
1.4.1.2. CloudEvents コンバーターの重大な変更
1.4.1.3. JDBC シンクコネクターの重大な変更
1.4.1.4. MongoDB コネクターの重大な変更
1.4.1.5. Oracle コネクターの重大な変更
1.4.1.5.1. Oracle 12c のサポートが終了

Oracle 12 のサポートは以前のリリースでは非推奨になりました。Debezium 2.7.3 以降では、Oracle 12 データベースで Debezium を使用できなくなりました。

Oracle Database 12c リリース 1 (12.1) は、2022 年 7 月 31 日にライフサイクル終了に達しました。この日付以降、Oracle はこのバージョンに対するバグ修正、セキュリティー更新、またはパッチを提供しません。Debezium 2.1.4 は、Oracle 12c のサポートを宣伝した最後のリリースでした。

1.4.1.6. SQL Server コネクターの重大な変更
1.4.1.6.1. SQL Server コネクターは store.only.captured.tables.ddl 設定プロパティーの設定を正しく反映する

SQL Server コネクターは、コネクターが最初にデプロイされたときにすべてのスキーマをキャプチャーせず、代わりに、設定の包含リストで定義されたテーブルに基づいてスキーマのみをキャプチャーしていました。これは、新しいテーブルのスキーマがスキーマ履歴トピックにすでに存在すると想定した場合に、ユーザーがコネクターに新しいテーブルを簡単に追加できなくする可能性があるバグでした。コネクターが store.only.captured.tables.ddl 設定オプションを正しく反映するようになる (DBZ-7593).

既存のコネクターのデプロイメントでは、スキーマ履歴トピックの store.only.captured.tables.ddl プロパティーを明示的に設定しないと、コネクターはデータベース内のすべての関連テーブルのスキーマ変更のキャプチャーを開始します。これを阻止し、以前の動作を維持する場合は、値が trueschema.history.internal.store.only.captured.tables.ddl を追加してコネクター設定を調整する必要があります。

1.4.2. 一般公開機能

Debezium 2.7.3 では、次のコネクターに新しい機能が提供されます。

1.4.2.1. 一般公開 (GA) にプロモートした機能

Debezium 2.7.3 リリースでは、次の機能がテクノロジープレビューから一般提供にプロモートされます。

1.4.2.1.1. Oracle Real Application Clusters (RAC) のサポート

以前のリリースでは、テクノロジープレビュー機能により、Oracle RAC 環境で Oracle Database 用の Debezium コネクターの使用をテストするオプションが提供されていました。Oracle RAC 環境でのコネクターの使用が完全にサポートされるようになりました。

1.4.2.1.2. PostgreSQL 16 スタンバイからのストリーミング (DBZ-7181)

PostgreSQL 16 データベースで Debezium コネクターを使用する場合、データベースのスタンバイインスタンスにレプリケーションスロットを定義できるようになりました。このデータベースの変更に基づいて、Debezium ではスタンバイ PostgreSQL 16 サーバーに接続し、そこから変更をストリーミングできるようになりました。運用システムからではなく、レプリカから変更データキャプチャーを実行すると、特に非常にアクティブなデータベースで、サーバーの負荷をより適切に分散できます。

1.4.2.2. すべてのソースコネクターに適用される GA 機能
1.4.2.2.1. イベントタイムスタンプの精度の向上

変更イベントのタイムスタンプの精度を向上させるために、変更イベントには、次の例に示すように、エンベロープに 2 つ、source 情報ブロックに 2 つの合計 4 つのフィールドが追加されました。

例1.3 精度を高めるためにタイムスタンプフィールドが追加される

Copy to Clipboard Toggle word wrap
{
  "source": {
    ...,
    "ts_us": "1559033904863123",
    "ts_ns": "1559033904863123000"
  },
  "ts_us": "1580390884335451",
  "ts_ns": "1580390884335451325",
}

エンベロープ値はマイクロ秒 (ts_us) とナノ秒 (ts_ns) の値を提供します。source 情報ブロックには、マイクロ秒とナノ秒の両方の精度値を含めることができます。ソースデータベースが十分な精度を提供しない場合、タイムスタンプ値はより低い精度に切り捨てられます。

1.4.2.2.2. 切り捨てられた配列フィールドの処理の改善 (DBZ-7925, DBZ-8189)

Debezium の以前のバージョンでは、column.truncate.* 機能は切り捨て設定に基づいてスライスされた ByteBuffer を返しました。これは Avro を使用する場合には機能しましたが、コネクター設定が JsonConverter を使用した場合は、切り捨ては行われませんでした。なぜなら、JsonConverter が指定された スライス ではなく、基礎となる配列全体に対して操作されたからです。

列の切り捨てロジックにより、新しい配列に基づいて ByteBuffer が明示的に作成されるようになりました。この変更により、JsonConverter は Kafka へのシリアル化中に切り捨てられた列の値を反映できるようになります。

column.truncate.to.length.chars 設定プロパティーが改善され、以前サポートされていた文字列型に加えて、配列フィールド型もサポートされるようになりました。詳細は、Debezium ユーザーガイド の SQL ベースのソースコネクターに関するドキュメントを参照してください。

1.4.2.2.3. 統合スナップショットモード (DBZ-7233)

スナップショットプロセスは各コネクターのライフサイクルの不可欠な部分であり、データストア内に存在するすべての履歴データを収集して、指定されたターゲットシステムに送信できるようにします。以前のリリースでは、Debezium コネクターは一貫したスナップショットモードのセットをサポートしていませんでした。この一貫性の欠如は、複数のコネクタータイプを扱うユーザーにとって特に混乱を招きました。

このリリースでは、Debezium はすべてのコネクターに対して一貫したスナップショットモードのセットを実装します。同じスナップショットモードは、MySQL コネクターに固有の never モードを除き、すべてのコネクターで使用できます。その結果、以前は一部のコネクターでは使用できなかった when_needed などの特定のスナップショットモードが、どのコネクターでも使用できるようになりました。

1.4.2.2.4. スナップショットとストリーミング間のオプションの遅延 (DBZ-7902)

デフォルトでは、スナップショットが完了すると、Debezium はすぐにストリーミングフェーズに移行します。スナップショットの終了とストリーミングフェーズの開始の間の遅延を指定するには、コネクター設定に streaming.delay.ms プロパティーを追加します。このプロパティーは、不要な再スナップショットを防止し、スナップショットからストリーミングへの移行中にコネクターの全体的な安定性を向上させるのに役立ちます。

このプロパティーを offset.flush.interval.ms プロパティーと組み合わせて使用し、ストリーミングが開始される前にオフセットが適切にフラッシュされるようにします。ストリーミングが開始される前に少なくとも 1 つのオフセットフラッシュ間隔が発生するようにするには、streaming.delay.ms の値を offset.flush.interval.ms よりわずかに大きい値に設定します。

1.4.2.2.5. トランザクションメタデータのエンコードされた順序 (DBZ-7698)

一部のパイプラインでは、イベントの順序付けは消費アプリケーションにとって重要です。Kafka トピックの再パーティション化などの特定の操作により、データパイプライン内のイベントの通常の順序が乱れる可能性があります。アプリケーションがイベントの順序を再構築しようとすると、エラーが発生する可能性があります。

このリリースでは、トランザクションメタデータを有効にすると、メタデータイベントによってトランザクションの順序がエンコードされます。エンコードされた順序フィールドは、トランザクションのタイムラインを正しく再構築するために必要な情報をコンシューマーに提供します。

1.4.2.3. JDBC シンクコネクター GA 機能
1.4.2.3.1. JDBC シンクを使用した PostgreSQL 配列 (DBZ-7752)

JDBC シンクコネクターは、ソース列を Kafka ARRAY ベースのペイロードフィールドタイプにマッピングする使用をサポートします。Debezium 2.7.3 では、設定を変更せずに、ARRAY ベースのフィールドをターゲットの PostgreSQL データベースにシリアル化できるようになりました。

1.4.2.4. MongoDB コネクター GA 機能
1.4.2.4.1. MongoDB 増分スナップショットの述語条件

増分スナップショットプロセスは、ソーステーブルまたはコレクションからデータセットの全体または一部を収集するための、さまざまなリカバリー状況で有用な役割を担っています。リレーショナルコネクターは、増分スナップショットシグナルに additional-conditions 値を指定してデータセットを制限し、特定のデータ行を対象とする再同期を実現するという考え方を長い間サポートしてきました。MongoDB でこれが可能になったことをお知らせします (DBZ-7138)。リレーショナルデータベースとは異なり、additional-conditions は JSON 形式で提供する必要があります。これは、増分スナップショットされるドキュメントのサブセットリストを取得するために、find 操作を使用して指定されたコレクションに適用されます。

1.4.2.4.2. ExtractNewDocumentState に MongoDB 削除のドキュメント ID が含まれる (DBZ-7695)

このリリースから、Debezium MongoDB ExtractNewDocumentState 単一メッセージ変換では、delete イベントのイベントペイロードに _id 属性が追加されるようになりました。この属性の追加により、SMT が生成するイベントを消費アプリケーションがより有効に活用できるようになります。

1.4.2.5. Oracle コネクター GA 機能
1.4.2.5.1. Oracle RAC のサポート

「Oracle Real Application Clusters (RAC) のサポート」を参照してください。

1.4.2.5.2. Oracle RAW データ型から STRING へのコンバーター (DBZ-7753)

Debezium は RAW 列タイプを一連のバイトとして扱うため、RAW 列を含む変更イベントでは BYTES のスキーマタイプが使用されます。消費アプリケーションが RAW 列のデータをどのように使用するかに関する情報がない場合、このデフォルトは理にかなっています。ただし、BYTES ではなく STRING 型として生成されたデータを使用するように設計されたアプリケーションをサポートするために、Debezium は、RAW 列を STRING ベースとして自動的に生成する RawToStringConverter を提供するようになりました。

コンバーターの設定方法は、Debezium ユーザーガイド を参照してください。

1.4.2.5.3. 変更イベントに含まれる Oracle ROW_ID (DBZ-4332)

ROW_ID は、テーブルの存続期間中、テーブルのすべての行にわたって一意ではありませんが、テーブルと行のライフサイクルが非常に厳密に管理されている特定の状況で使用できます。コミュニティーのリクエストに応じて、Oracle コネクターの変更イベントソース情報ブロックに新しい row_id フィールドを追加しました。このフィールドには、次の条件に従って ROW_ID 値が設定されます。

  • 挿入、更新、削除のストリーミングイベントからのみ設定されます。
  • スナップショットイベントには row_id 値が含まれません。
  • LogMiner および XStream ストリーミングアダプターによってのみ提供され、OpenLogReplicator はサポートされません。

基準に一致しないイベントには、オプション としてマークされているため、row_id フィールドは含まれません。

1.4.2.5.4. カスタムスキーマ名を持つ Oracle フラッシュテーブル (DBZ-7819)

Debezium の以前のバージョンでは、Oracle コネクターは、コネクターユーザーアカウントのデフォルトのテーブルスペースに LogMiner フラッシュテーブルを作成するように設計されていました。DBA がフラッシュテーブルを別のテーブルスペースに移動したい場合、問題が発生する可能性があります。以前は、フラッシュテーブルを優先テーブルスペースに追加するには、いくつかの手順を実行する必要がありました。まず、ユーザーアカウントを変更して新しいデフォルトのテーブルスペースを指定するか、そのテーブルスペースを指定した別のアカウントを作成します。次に、正しい場所に配置されるようにテーブルを再作成する必要があります。

このリリース以降では、次の例に示すように、log.mining.flush.table.name プロパティーを使用してフラッシュテーブルを作成する場所を指定できます。

例1.4 カスタムスキーマ名を使用してフラッシュテーブルのロケーションを指定する設定

Copy to Clipboard Toggle word wrap
log.mining.flush.table.name=THE_OTHER_SCHEMA.LOG_MINING_FLUSH_TABLE

スキーマ名はオプションです。スキーマ名を指定しない場合、コネクターは従来の動作に従い、コネクターユーザーアカウントのデフォルトのテーブルスペースを使用してフラッシュテーブルを作成し、その存在を確認します。

1.4.2.5.5. 多数のテーブルを持つ Oracle クエリーフィルター (DBZ-7847)

Debezium Oracle コネクターは、単一のコネクターデプロイメントで数千のテーブルをサポートできます。ただし、IN モードを使用してクエリーフィルターをカスタマイズすることを推奨します。設定されたデータベースのテーブルに大量の変更が発生した場合、変更が処理のために Debezium に渡される前に、データベースレベルでそのデータセットをフィルター処理することを推奨します。

以前のバージョンでは、コネクターの log.mining.query.filter.modein に設定され、テーブルの include リストに 1000 を超える要素が含まれていると、SQL エラーが発生していました。Oracle では、IN 句内で 1000 を超える要素は許可されません。この制限に対処するために、Debezium 2.7.3 では、1000 項目の IN 句リストの複数のバケット間の論理和を使用します。

1.4.2.5.6. LogMiner を使用したイベントごとの Oracle Redo SQL (DBZ-6960)

Debezium Oracle コネクターは、INSERTUPDATE、および DELETE イベントレコードの source 情報ブロック内の操作の元の SQL を報告できるようになりました。変更イベントの一部として REDO SQL を含めるようにコネクターを設定するには、次の例に示すように log.mining.include.redo.sql プロパティーを設定します。

Copy to Clipboard Toggle word wrap
"log.mining.include.redo.sql": "true"

この機能はオプトインのみの機能です。使用するには、明示的に有効にする必要があります。

重要

この機能を有効にすると、イベントペイロードのサイズが 2 倍以上に増加する可能性があります。

このオプションを有効にすると、次の例に示すように、source 情報ブロックに新しいフィールド redo_sql が含まれます。

例1.5 REDO SQL が有効になっている INSERT ソース情報ブロック

Copy to Clipboard Toggle word wrap
"source": {
  ...
  "redo_sql": "INSERT INTO \"DEBEZIUM\".\"TEST\" (\"ID\",\"DATA\") values ('1', 'Test');"
}
警告

LogMiner が CLOB、BLOB、および XML データ型に関連する SQL を再構築する方法が原因で、lob.enabledtrue に設定されている場合は、REDO SQL の使用を有効にすることはできません。log.mining.include.redo.sqllob.enabled の両方を有効にすると、コネクターを起動した後に設定エラーが報告されます。

1.4.2.5.7. Oracle LogMiner トランザクションバッファーの改善

LogMiner の使用時に、トランザクション登録の新しい遅延ストラテジーが追加されました。このストラテジーにより、コネクターがそのトランザクションの最初の変更をキャプチャーするまで、バッファー内のトランザクションレコードの作成が効果的に遅延されます。

注記

lob.enabledtrue に設定した場合、コネクターがこれら 2 つのモードで特定の操作を処理する方法が原因で、この遅延ストラテジーは使用できません。

トランザクション登録を遅らせることには、次のようないくつかの利点があります。

  • 特にコネクターが同時に多数の同時リクエストを処理する場合に、トランザクションキャッシュのオーバーヘッドを削減します。
  • コネクターが変更のない長時間実行トランザクションをキャプチャーすることを阻止します。
  • いくつかのシナリオでは、オフセット内の low-watermark SCN の進行を促進します。
1.4.2.6. PostgreSQL コネクター GA 機能

「一般公開 (GA) にプロモートした機能」 を参照

1.4.2.7. SQL Server コネクター GA 機能
1.4.2.7.1. SQL Server クエリーの改善 (DBZ-7273)

Debezium SQL Server コネクターは、fn_cdc_get_all_changes…​ と呼ばれる共通の SQL Server ストアドプロシージャーを使用して、特定のテーブルに関連するキャプチャーされた変更をすべて取得します。このクエリーは複数の結合を実行し、結合サブクエリーの 1 つからのみデータを返すため、非効率的になる可能性があります。

このコネクターのリリースでは、コネクターがテーブルの変更に関する詳細を収集するために使用する方法を指定する設定プロパティー data.query.mode が導入されています。デフォルトの動作は以前のリリースから変更されておらず、前述のストアドプロシージャーに委譲する値 function を使用して設定されます。

コネクターが変更を収集する効率を高めるには、data.query.mode の値を direct に設定して、コネクターがクエリーを内部的に構築するように設定します。

1.4.2.7.2. SQL Server コネクターでハートビートアクションクエリーがサポート対象に (DBZ-7801)

Debezium 2.7.3 では、heartbeat.action.query コネクター設定プロパティーのサポートが SQL Server コネクターに追加されました。heartbeat.action.query プロパティーにより、コネクターは、heartbeat.interval.ms で定義された間隔でソースデータベースへの書き込み操作を実行できます。書き込み操作は、コネクターによってキャプチャーされ、その後 Kafka またはターゲットシステムに送信される変更イベントを生成することを目的としています。

定期的に変更をキャプチャーしているアクティブなデータベースでは、変更のストリームが一定に保たれることで、オフセットをトランザクションログ内の読み取り位置と同期させることができます。ただし、コネクターがソースから変更をキャプチャーしている場合、キャプチャーされたテーブルよりもキャプチャーされていないテーブルで多くの変更が発生するため、heartbeat.action.query を設定すると、オフセット内の読み取り位置を低いキャプチャーアクティビティーと同期させることができます。

1.4.3. テクノロジープレビュー機能

Debezium 2.7.3 では、次のテクノロジープレビュー機能を利用できます。

重要

テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でのテクノロジープレビュー機能の実装は推奨しません。テクノロジープレビュー機能は、近々発表予定の製品イノベーションをリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。サポート範囲の詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

1.4.3.1. MariaDB 用 Debezium コネクター (DBZ-7693)

以前のリリースでは、Debezium MySQL コネクターを MariaDB データベースデプロイメントに対して実行するように設定できました。Debezium 2.7.3 では、MariaDB 用の新しいスタンドアロンコネクター実装が導入され、さらに進化しました。

このコネクタースイートへの追加により、Debezium は、MariaDB データベースで MySQL コネクターを使用できるように connection.adapter 設定を行う以前の機能を廃止しました。

1.4.3.2. Oracle Database 23ai との互換性

この Debezium リリースでは、テクノロジープレビュー機能として Oracle 23ai とのインテグレーションが提供されます。

1.4.3.3. Oracle コネクターでの大きなデータ型 (BLOBCLOB、および NCLOB) の使用

詳細は、Debezium ユーザーガイドの Oracle バイナリー文字 LOB タイプ を参照してください。

1.4.3.4. SQL コネクターの並列初期スナップショット

複数の並列スレッドを使用して初期スナップショットを実行する機能は、MySQL コネクターを除くすべての Debezium SQL コネクターのテクノロジープレビュー機能として利用できます。Debezium MySQL コネクターについては、並列初期スナップショットの開発者プレビュー が利用可能です。

並列初期スナップショットを使用するようにコネクターを設定するには、コネクター設定の snapshot.max.threads プロパティーを 1 より大きい値に設定します。

コネクターの詳細は、Debezium ユーザーガイドの snapshot.max.threads を参照してください。

1.4.3.5. CloudEvents コンバーター

CloudEvents コンバーターは、CloudEvents 仕様に準拠した変更イベントレコードを生成します。CloudEvents の変更イベントのエンベロープは、JSON または Avro であり、各エンベロープタイプは data フォーマットとして JSON または Avro をサポートしています。詳細は、CloudEvents コンバーター を参照してください。

1.4.3.6. カスタムコンバーター

デフォルトのデータ型変換がニーズを満たさない場合は、コネクターで使用するカスタムコンバーターを作成できます。詳細は、カスタム開発されたコンバーター を参照してください。

1.4.4. 開発者プレビュー機能

Debezium 2.7.3 では、次の開発者プレビュー機能が利用できます。

重要

開発者プレビュー機能は、Red Hat ではいかなる形でもサポートされていません。また、機能的には完全ではなく、実稼働環境に対応していません。開発者プレビューのソフトウェアを実稼働ワークロードまたはビジネスクリティカルなワークロードには使用しないでください。開発者プレビューソフトウェアは、今後 Red Hat 製品サービスとして追加される可能性のある製品ソフトウェアを前もって早期に利用できます。お客様はこのソフトウェアを使用して機能をテストし、開発プロセス中にフィードバックを提供できます。このソフトウェアにはドキュメントが存在しない可能性があり、変更または削除される可能性があります。また、限定的なテストしか行われていません。Red Hat は、関連する SLA なしに、開発者プレビューソフトウェアに対するフィードバックを送信する手段を提供する場合があります。

Red Hat 開発者プレビューソフトウェアのサポート範囲の詳細は、開発者プレビューのサポート範囲 を参照してください。

1.4.4.1. Debezium Server (開発者プレビュー)

Debezium Server は、データソースからの変更イベントを設定済みの Kafka または Redis データシンクに直接ストリーミングする、すぐに使用できるアプリケーションです。一般に利用可能な Debezium コネクターとは異なり、Debezium Server のデプロイメントは Apache Kafka Connect に依存しません。{ProductNameServer} 開発者プレビューの詳細は、Debezium ユーザーガイド を参照してください。

1.4.4.2. MongoDB コネクター開発者プレビュー機能
1.4.4.2.1. MongoDB コレクションスコープストリーミング (開発者プレビュー) (DBZ-7760)

Debezium MongoDB コネクターの以前のイテレーションでは、変更ストリームをデプロイメントおよびデータベーススコープに対して開くことができましたが、権限が制限された環境では必ずしも理想的ではありませんでした。Debezium 2.7.3 では、コネクターが単一のコレクションの範囲内でのみ動作する新しい変更ストリームモードが導入され、このようなきめ細かい permissive 設定が可能になります。

MongoDB コネクターのキャプチャースコープを特定のコレクションに制限するには、コネクター設定の capture.scope プロパティーの値を collection に設定します。この設定は、コネクターが単一の MongoDB コレクションからのみ変更をキャプチャーすることを意図している場合に使用します。

この機能を使用する場合、一定の制限が存在します。capture.scope の値を collection に設定すると、コネクターはデフォルトの source シグナリング チャネルを使用できません。Kafka、JMX、または File チャネル経由で送信されるシグナルを含む増分スナップショットシグナルの処理を許可するには、コネクターの source チャネルを有効にする必要があります。したがって、コネクター設定で capture-scope プロパティーの collection オプションが設定されている場合、コネクターは増分スナップショットを実行できません。

1.4.4.3. MySQL コネクター開発者プレビュー機能
1.4.4.3.1. MySQL 並列スキーマスナップショット (DBZ-6472) (開発者プレビュー)

スナップショットのパフォーマンスを向上させるために、MySQL コネクターは並列化を実装し、変更イベントのスナップショットを同時に作成して、テーブルのスキーマイベントを生成します。スナップショットを実行し、スキーマイベントを並行して生成することにより、コネクターはデータベース内の多数のテーブルのスキーマをキャプチャーするために必要な時間を短縮します。

1.4.4.3.2. MySQL 並列初期スナップショット (開発者プレビュー)

MySQL の Debezium 初期スナップショットは常にシングルスレッドでした。この制限は主に、複数のトランザクション間でデータの一貫性を確保するのが複雑であることに起因します。

このリリースでは、複数のスレッドを使用してテーブルレベルのスナップショットを並列に実行するように MySQL コネクターを設定できます。

この新しい機能を活用するには、コネクター設定に snapshot.max.threads プロパティーを追加し、そのプロパティーを 1 より大きい値に設定します。

例1.6 並列スナップショットを使用した設定の例

Copy to Clipboard Toggle word wrap
snapshot.max.threads=4

前の例の設定に基づいて、コネクターは一度に最大 4 つのテーブルのスナップショットを作成できます。スナップショットを作成するテーブルの数が 4 より大きい場合、スレッドは最初の 4 つのテーブルのうち 1 つの処理を完了した後、キュー内の次のテーブルを見つけてスナップショットの作成を実行し始めます。コネクターが指定されたすべてのテーブルでスナップショットの実行を完了するまで、プロセスは続行されます。

詳細は、Debezium ユーザーガイドの snapshot.max.threads を参照してください。

1.4.4.4. Oracle コネクター開発者プレビュー機能
1.4.4.4.1. 論理スタンバイからの変更の取り込み (開発者プレビュー)

Oracle 用の Debezium コネクターは、実稼働データベースまたはプライマリーデータベースに接続するときに、内部フラッシュテーブルを使用して Oracle Log Writer Buffer (LGWR) プロセスのフラッシュサイクルを管理します。フラッシュプロセスでは、コネクターがデータベースにアクセスするために使用するユーザーアカウントに、このフラッシュテーブルの作成と書き込みの権限が必要です。ただし、論理スタンバイデータベースには制限的なデータ操作ルールが設定されていることが多く、読み取り専用の場合もあります。その結果、データベースへの書き込みが実行できなくなる可能性があります。

Oracle の読み取り専用論理スタンバイデータベースをサポートするために、Debezium はフラッシュテーブルの作成と管理を無効にするプロパティーを導入しています。この機能は、Oracle スタンドアロンインストールと Oracle RAC インストールの両方で使用できます。

Oracle コネクターが読み取り専用論理スタンバイを使用できるようにするには、次のコネクターオプションを追加します。

Copy to Clipboard Toggle word wrap
internal.log.mining.read.only=true

詳細は、Debezium ユーザーガイドの Oracle コネクターのドキュメント を参照してください。

1.4.4.4.2. Oracle LogMiner ハイブリッドマイニングストラテジー

LogMiner ハイブリッド マイニングストラテジーを使用するように。Oracle 用の Debezium コネクターを設定できるようになりました。このストラテジーは、デフォルトのマイニングストラテジーのすべてのスキーマ進化機能をサポートすると同時に、オンラインカタログストラテジーによって提供されるパフォーマンスの最適化も活用するように設計されています。このストラテジーを使用するようにコネクターを設定するには、log.mining.strategy 設定プロパティーを値 hybrid に設定します。

online_catalog ストラテジーでは、スキーマの変更とデータの変更が同じマイニングステップ内で発生する可能性があります。このような場合、LogMiner は SQL を正しく再構築できず、生成されるテーブルには OBJ# xxxxxx などの名前が割り当てられます。同様に、列は COL1COL2 のように表されます。オンラインカタログストラテジーを使用する場合にこの状況を回避するには、マイニングステップでスキーマの変更とデータの変更の両方が同時に検出されないように、スキーマの変更を慎重に調整する必要がありますが、これは必ずしも実行可能ではありません。

対照的に、ハイブリッドストラテジーでは、データベースレベルでテーブルのオブジェクト ID を追跡し、この ID を使用して、Debezium リレーショナルテーブルモデルからテーブルに関連付けられたスキーマを検索します。したがって、Debezium は、これらの特定のコーナーケースで Oracle LogMiner が実行できないことを行うことができます。テーブル名はリレーショナルモデルのテーブル名から取得され、列は列の位置によってマップされます。

残念ながら、Oracle は、CLOB、BLOB、および XML データ型の失敗した SQL 操作を再構築する方法を提供していません。その結果、lob.enabled の値が true に設定されている場合は、hybrid ストラテジーを使用するようにコネクターを設定できません。hybrid ストラテジーを使用するように設定され、lob.enabledtrue に設定されているコネクターを起動しようとすると、コネクターは起動に失敗し、設定エラーが報告されます。

1.4.4.5. PostgreSQL コネクター開発者プレビュー機能
1.4.4.5.1. PostgreSQL ストリーミングの 1 回限りの提供 (開発者プレビュー)

このリリースでは、Debezium は PostgreSQL コネクターに対して 1 回限りのセマンティクスのサポートを提供します。PostgreSQL の 1 回限りの提供はストリーミングフェーズにのみ適用され、スナップショットには適用されません。

Debezium は、監視対象ソースで発生するすべての変更イベントをコネクターが確実にキャプチャーできるようにすることを目的として、少なくとも 1 回の配信を提供するように設計されています。KIP-618 では、Apache Kafka コミュニティーが、プロデューサーがメッセージを再試行するときに発生する問題に対処するためのソリューションを提案しています。ソースコネクターは、ブローカーが以前にバッチをコミットした後でも、イベントのバッチを Kafka ブローカーに再送信することがあります。この状況では、重複したイベントがコンシューマー (シンクコネクター) に送信され、重複を簡単に処理できないコンシューマーに問題が発生する可能性があります。

1 回限りの配信を有効にするためにコネクター設定を変更する必要はありません。ただし、Kafka Connect ワーカー設定で 1 回限りの配信を設定する必要があります。必要な Kafka Connect 設定プロパティーの設定に関する詳細は、KIP-618 を参照してください。

注記

Kafka ワーカー設定で exactly.once.supportrequired に設定するには、Kafka Connect クラスター内のすべてのコネクターが 1 回限りの配信をサポートしている必要があります。ワーカーによる 1 回限りの配信へのサポートに一貫性がないクラスターでこのオプションを設定しようとすると、この機能をサポートしていないコネクターは起動時に検証に失敗します。

1.4.5. このリリースのその他の更新

この Debezium 2.7.3 リリースでは、他の複数の機能の更新と修正が提供されます。完全なリストは、Debezium 2.7.3 機能強化アドバイザリー (RHEA-2024:139598) を参照してください。

1.5. 非推奨の機能

以下の機能は非推奨となり、今後のリリースで削除される予定です。

schema_only および schema_only_recovery スナップショットモードの非推奨化
  • schema_only_recovery モードは非推奨となり、recovery モードに置き換えられました。
  • schema_only モードは非推奨となり、no_data モードに置き換えられました。
重要

現在のリリースには非推奨のスナップショットモードが引き続き含まれていますが、今後のリリースでは削除される予定です。削除に備えて、これらの非推奨モードに依存するスクリプト、設定、プロセスを調整します。

以前のリリースで非推奨となった機能については、2.5.4 リリースノート を参照してください。

1.6. 既知の問題

次の既知の問題は Debezium 2.7.3 に影響を及ぼします。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.