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)