이 콘텐츠는 선택한 언어로 제공되지 않습니다.

Chapter 1. Debezium 3.0.8 release notes


Debezium is a distributed change data capture platform that captures row-level changes that occur in database tables and then passes corresponding change event records to Apache Kafka topics. Applications can read these change event streams and access the change events in the order in which they occurred. Debezium is built on Apache Kafka and is deployed and integrated with Streams for Apache Kafka on OpenShift Container Platform or on Red Hat Enterprise Linux.

The following topics provide release details:

1.1. Debezium database connectors

Debezium provides source connectors and sink connectors that are based on Kafka Connect. Connectors are available for the following common databases:

Source connectors
  • Db2
  • Informix (Developer Preview)
  • MariaDB
  • MongoDB
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server
Sink connectors
  • JDBC sink connector
  • MongoDB sink connector (Developer Preview)

1.1.1. Connector usage notes

Db2
  • The Debezium Db2 connector does not include the Db2 JDBC driver (jcc-11.5.0.0.jar). See the Db2 connector deployment instructions for information about how to deploy the necessary JDBC driver.
  • The Db2 connector requires the use of the abstract syntax notation (ASN) libraries, which are available as a standard part of Db2 for Linux.
  • To use the ASN libraries, you must have a license for IBM InfoSphere Data Replication (IIDR). You do not have to install IIDR to use the libraries.
Oracle
PostgreSQL
  • To use the Debezium PostgreSQL connector you must use the pgoutput logical decoding output plug-in, which is the default for PostgreSQL versions 10 and later.

1.2. Debezium supported configurations

For information about Debezium supported configurations, including information about supported database versions, see the Debezium 3.0.8 Supported configurations page.

1.3. Debezium installation options

You can install Debezium with Streams for Apache Kafka on OpenShift or on Red Hat Enterprise Linux:

1.4. Debezium 3.0.8 features and improvements

1.4.1. Breaking changes

Breaking changes represent significant differences in connector behavior or require configuration changes that are not compatible with earlier Debezium versions.

Debezium 3.0.8 introduces breaking changes that affect the following components:

For information about breaking changes in the previous Debezium release, see the Debezium 2.7.3 Release Notes.

1.4.1.1. Breaking changes relevant to all connectors

The following breaking changes apply to all connectors:

1.4.1.1.1. Java 17 is required

The Java requirements for running Debezium have changed. Beginning with this release, all Debezium connectors require a runtime baseline of Java 17.

If you use Java 11 with new connectors, Kafka Connect silently fails to find the connector. The connector does not report any bytecode errors

To run Debezium Server, a runtime baseline of Java 21 is required.

1.4.1.1.2. Kafka signal no longer reprocessed automatically after a restart (DBZ-7856)

In earlier releases, after a connector restart, Debezium automatically reprocessed Kafka-based signals, which could lead to unintended side effects. Beginning with this release, if a connector stops, and you want to process a Kafka-based signal, you must resubmit the signal.

1.4.1.1.3. Deprecated incremental additional-condition signal field removed (DBZ-8278)

The deprecated additional-condition field for incremental snapshot signals has been removed and is no longer supported. This field is replaced with the new additional-conditions property, which enables you to specify conditions by table. If have scripts or workflows that refer to the old field, update them to use the new property.

1.4.1.2. MariaDB/MySQL connector breaking changes

1.4.1.2.1. Incorrect default value documented for MariaDB and MySQL schema history property (DBZ-8558)

Earlier versions of the MariaDB and MysSQL documentation provided an incorrect default value for the schema.history.internal.store.only.captured.databases.ddl property. The correct default value is false.

Although this change does not affect the code, if you previously set this property, review your current configuration to verify that it contans the value that is best suited to your environment. For more information, see the Debezium User Guide.

1.4.1.3. Oracle connector breaking changes

1.4.1.3.1. New default mining strategy (DBZ-3656)

The default mining strategy for the Oracle connector is now online_catalog. If you previously relied on the default redo_log_catalog strategy, and you want to continue using that strategy, you must explicitly specify it in the connector configuration.

For more information, see: Section 1.4.2.3.1, “New default mining strategy (DBZ-3656)”.

1.4.1.3.2. Removal of deprecated configuration properties (DBZ-8181).

The following Oracle connector configuration properties that were deprecated in the previous release are now removed in Debezium 3.0.8:

  • log.mining.transaction.retention.hours replaced by log.mining.transaction.retention.ms
  • log.mining.archive.destination.name replaced by archive.destination.name
  • log.mining.archive.log.hours replaced by archive.log.hours

    If you previously set any of the preceding properties for the connector, after the upgrade, update the connector configuration to use the new equivalents.

1.4.1.3.3. Reselect column post processor behavior changed for Oracle (DBZ-8653)

The ReselectColumnsPostProcessor behavior has changed. In this release, the post processor now reselects Oracle LOB columns regardless of the value of the lob.enabled configuration property. With this change, you can now use the column reselection post processer to populate LOB columns without mining those columns during streaming.

1.4.2. General availability features

Debezium 3.0.8 provides new features for the following connectors:

1.4.2.1. Features promoted to General Availability

The following features are promoted from Technology Preview to General Availability in the Debezium 3.0.8 release:

1.4.2.1.1. Debezium connector for MariaDB (DBZ-7693)

The standalone connector implementation for MariaDB is now fully supported.

1.4.2.1.2. Use of large data types (BLOB, CLOB, and NCLOB) with the Oracle connector

The Oracle connector now offers full support for processing BLOB, CLOB, and NCLOB data types. For more information, see Oracle binary and character LOB types in the Debezium User Guide.

1.4.2.1.3. Parallel initial snapshots for SQL-based connectors

The ability to use multiple parallel threads to perform an initial snapshot is now available for general availability for all of the Debezium SQL connectors, except for MySQL and MariaDB. Parallel initial snapshots for the Debezium MariaDB and MySQL connectors is available as a Developer Preview feature.

To configure connectors to use parallel initial snapshots, set the snapshot.max.threads property in the connector configuration to a value greater than 1.

For more information, see snapshot.max.threads in the Debezium User Guide documentation for your connector.

Important

In some environments, increasing the value of snapshot.max.threads, can result in snapshot failures.
For more information, see Section 1.6, “Known issues”

1.4.2.2. JDBC sink connector GA features

1.4.2.2.1. JDBC retry flushes on specific failures (DBZ-7291)

The JDBC sink connector uses a set of buffers to improve the throughput of writes to the target database. In some cases, the flush operation of these buffers faces specific exceptions when other applications lock a specific row or table. To improve the user experience, two configuration properties are now available for the connector:

flush.max.retries
Defines the number of retries when a flush failure occurs.
flush.retry.delay.ms
Defines the number of milliseconds to wait between a retry.

The retry feature is enabled by default. The connector attempts makes a maximum of 5 attempts to retry flush operations, with a 1-second delay between retry attempts. If you do not want the connector to retry flush operations, set flush.max.retries to 0 to disable this feature.

1.4.2.3. Oracle connector GA features

1.4.2.3.1. New default mining strategy (DBZ-3656)

In Debezium 3.0.8, the default value for the Oracle connector log.mining.strategy property has changed from redo_log_catalog to the generally more performant online_catalog option. If you previously used the default redo_log_catalog strategy, and you want to retain that setting, after you upgrade to the current version, you must explicitly set the value of the log.mining.strategy property to redo_log_catalog.

Additional resources

1.4.2.3.2. Oracle offline RAC node flush improvements (DBZ-8177)

In an earlier release, the Oracle RAC node flush strategy was changed to force a 3-second delay whenever a database administrator takes an Oracle RAC node offline. During this pause, the connector attempts to flush the log writer (LGWR) process. However, the pause would be implemented even in situations in which the LGWR buffers are not flushed. Because RAC nodes cannot write to the redo logs when they are offline, this delay introduced unnecessary latency.

In Debezium 3.0.8, to improve stability, the 3-second delay is now imposed only for connections that are active to an Oracle RAC node. As a result, after an administrator takes a RAC node offline, the connector no longer imposes any latency.

1.4.2.3.3. Oracle CLOB/BLOB default value support (DBZ-8248)

In Oracle, to ensure that LOB columns are non-NULL, you can use the EMPTY_CLOB() or EMPTY_BLOB() functions to specify default values for CLOB or BLOB fields in a table. Earlier Debezium releases did not evaluate these special functions, which resulted in the connector marking these columns as optional, because they could contain null values.

Beginning in Debezium 3.0.8, when you use the EMPTY_BLOB() or EMPTY_CLOB() functions to define the default value for an Oracle BLOB column, the connector now emits the field as not optional. The field in the resulting change event contains the appropriate default value, either an empty byte array, or an empty string.

1.4.2.4. PostgreSQL connector GA features

1.4.2.4.1. Snapshot isolation for PostgreSQL (DBZ-1252)

Through the addition of a new connector configuration property, snapshot.isolation.mode, this feature addresses a longstanding request to provide snapshot isolation support for PostgreSQL. You can now specify how to balance the need for consistency and performance when executing initial and ad-hoc blocking snapshots, by specifying one of four snapshot isolation levels:

  • serializable (the default)
  • repeatable_read
  • read_committed
  • read_uncommitted

These isolation levels specify how consistent the snapshot is and what type of locking to apply to the source data, if any, when the connector reads it during a snapshot.

For example, you can set snapshot.isolation.mode to serializable to enforce strict isolation and locking, preventing administrators and users from performing such operations as creating a table index, while a snapshot is running. Or you can apply the least restrictive read_uncommitted setting, which permits snapshots to read data from user transactions that are not yet committed. Permitting such "dirty reads" as they are known, can lead to inconsistent data, but at the same time, because data is not locked, the snapshot does not interfere with database performance.

For more information, see snapshot.isolation.mode in the PostgreSQL connector documentation.

1.4.2.4.2. Support for PostgreSQL pgvector data types (DBZ-8121)

PostgreSQL 15 introduced the pgvector extension, which provides the following data types:

  • vector
  • halfvec
  • sparsevec

Beginning in Debezium 3.0.8, the PostgreSQL connector supports streaming of events that use these pgvector data types. When the connector emits a change event record for an operation that involves one of these data types, it converts each vector type in the source to a semantic type, according to the mappings in following list:

  • vector: Mapped to an ARRAY of numeric values.
  • halfvec: Mapped to an ARRAY of numeric values.
  • sparsevec: Mapped to a Struct that contains the following members:

    • The number of dimensions in the vector.
    • An index that represents the position of vector elements.

After you enable the pgvector extension in the database, no further configuration is required for Debezium to convert vector values. For more information, see pgvector types in the PostgreSQL connector documentation.

1.4.2.5. SQL Server connector GA features

1.4.2.5.1. Support for capturing data from TDE-encrypted SQL Server databases (DBZ-4590)

Transparent Data Encryption (TDE) is available in SQL Server 2017 Enterprise Edition and in both the Standard Edition and Enterprise Edition of SQL Server 2019 and 2022. As its name suggests, TDE operates automatically and transparently to encrypt data at rest in the database and transaction log. If TDE is enabled for the database, data cannot be read by unauthorized users. At the same time, access by authorized users is not affected, including access by a properly configured Debezium SQL Server connector. No special configuration is required to enable Debezium to stream changes from a SQL Server database that has TDE enabled. That is, if a connector can connect to a database that is not enabled for TDE, and the database later has TDE enabled, the original connector configuration still works.

1.4.2.5.2. MBean name for the SQL Server connector JMX signaling and notifications channels now includes the taskId (DBZ-8137)

It’s now possible to uniquely identify the signal channel for each database task when you deploy a single connector to stream changes from multiple SQL Server databases.

The format of the MBean names that the Debezium SQL Server connector uses in signaling and notification operations was changed to ensure uniqueness per task. Normal JMX metrics are registered with a taskId attribute, because SQL Server supports spawning a unique task per database mapping. In past releases, the JMX signal channel did not honor this, which could prevent the connector from starting a channel for each task. Adding the taskId to the MBean name enables the connector to use multiple tasks when these operations span databases. For more information, see Debezium SQL Server connector schema history metrics in the Debezium User Guide.

1.4.2.5.3. Update SQL Server documentation to correct schema history MBean name(DBZ-8840)

Documentation for the Debezium SQL Server connector now correctly describes the format of schema history MBean names. The updated description specifies that names now include the same task attribute that is present in the snapshot and streaming metrics MBean names.

1.4.2.6. Post processor and single message transformation (SMT) GA features

1.4.2.6.1. Single message transformation (SMT) to decode PostgreSQL logical messages (DBZ-8103)

PostgreSQL is unique in that you can implement the Outbox pattern without creating an outbox table. Instead, the database can use the pg_logical_emit_message function to write logical messages directly to the write-ahead log (WAL). However, when Debezium captures these events from the WAL, the data that it sends to Kafka is formatted as a series of bytes. Consuming applications that require structured messages might not be able to consume data in this format.

The new Logical message decoder SMT (DecodeLogicalDecodingMessageContent) is a PostgreSQL-specific single message transformation. The transformation is designed to convert pg_logical_emit_message event bytes into a structured event format so that consuming applications can process them. In this way you can implement the Outbox pattern without creating a physical outbox table. For more information, see the Decoding binary content in PostgreSQL logical decoding messages in the Debezium User Guide.

1.4.2.6.2. Reselect columns post processor improvements (DBZ-8212)

To store data types whose sizes exceed the standard capacity of a column, some databases use specialized mechanisms to store the oversized data in an external location, outside of the main table. For example PostgreSQL uses The Oversized-Attribute Storage Technique (TOAST), and Oracle uses Large Object (LOB) storage, or Oracle Exadata Extended Strings.

By default, when Debezium emits an event record in response to a change in a table row that includes oversized data fields, the resulting event record only includes the values of oversized data fields if they are changed by the SQL operation. The connector populates these values only if the table operation modifies the value of the oversized data column. If the value of the oversized data column remains unchanged, the connector inserts a placeholder for the field. This placeholder incorrectly implies that the field does not contain a value.

The ReselectColumnsPostProcessor was introduced to populate the values of oversized data fields in change event records. This post processor now supports reselection of int and bigint array data types, so that these fields are always populated, even when they’re values are unchanged following a SQL operation.

1.4.3. Technology Preview features

The following Technology Preview features are available in Debezium 3.0.8:

Important

Technology Preview features are not supported with Red Hat production service-level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend implementing any Technology Preview features in production environments. Technology Preview features provide early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process. For more information about support scope, see Technology Preview Features Support Scope.

1.4.3.1. MongoDB collection-scoped streaming (Technology Preview) (DBZ-7760)

This feature is promoted from Developer Preview to Technology Preview.

In previous iterations of the Debezium MongoDB connector, change streams could be opened against the deployment and database scopes, which was not always ideal for restrictive permission environments. Debezium 3.0.8 introduces a new change stream mode in which the connector operates within the scope of a single collection only, allowing for such granular permissive configurations.

To limit the capture scope of a MongoDB connector to a specific collection, set the value of the capture.scope property in the connector configuration to collection. Use this setting when you intend for a connector to capture changes only from a single MongoDB collection.

Limitations

Certain limitations exist when using this feature. If you set value of the capture.scope property to collection, the connector cannot use the default source signaling channel. Enabling the source channel for a connector is required to permit processing of incremental snapshot signals, including signals sent via the Kafka, JMX, or File channels. Thus, if you set the value of the capture-scope property in the connector configuration to collection, the connector cannot perform incremental snapshots.

1.4.3.2. Support for MySQL vector datatypes (Technology Preview) (DBZ-8157)

The Debezium MySQL grammar now processes vector functions. With this change, the Debezium MySQL connector is able to process the new VECTOR(n) data type that is available in MySQL 9.0. For more information about how Debezium processes Vector types, see the MySQL connector documentation.

1.4.3.3. Compatibility with Oracle Database 23ai (Technology Preview)

This release of Debezium continues to provide integration with Oracle 23ai as a Technology Preview feature.

1.4.3.4. Support for Oracle EXTENDED string sizes (Technology Preview) (DBZ-8039)

In Oracle 12c you can set the database parameter max_string_size to EXTENDED to enable the use of extended strings that increase the maximum size of character data types from 4000 bytes to 32K. When you enable the use of extended strings, you do not have to use CLOB-based operations to work with character data up to 32K. Instead, you can use the same syntax that you use with character data that is 4000 bytes or less.

With Debezium 3.0.8, the Oracle connector can now capture changes directly from the transaction logs data for databases that use extended strings. Because extended strings are effectively CLOB operations, to mine these column types, you must set lob.enabled to true.

For more information about connector support for extended strings size, see the Oracle connector documentation in the Debezium User Guide.

Important

When Oracle is configured to use EXTENDED string sizes, LogMiner can sometimes fail to escape single quotes within extended string fields. As a result, values of these fields can be truncated, resulting in invalid SQL statements, which the Oracle connector is unable to parse.
For more information, see DBZ-8034.

To mitigate this problem, you can configure the connector to relax single-quote detection by setting the following property to true:
internal.log.mining.sql.relaxed.quote.detection

Although this internal setting might help to resolve some instances of the problem, its use is not currently a supported feature.

1.4.3.5. Use of XML data types with the Oracle connector (Technology Preview)

The Debezium Oracle connector can process the XMLType data type that Oracle uses for handling XML data in the database.

For information about the mappings that the connector uses for the Oracle XMLTYPE, see XML types in the connector documentation.

1.4.3.6. Support for PostgreSQL 17 failover replication slots (Technology Preview) (DBZ-8412)

PostgreSQL 17 adds support for failover slots, which are replication slots that are automatically synchronized to a standby server.

When you create a replication slot on the primary PostgreSQL server in a cluster, you can configure it to be replicated to a failover replica. A PostgreSQL administrator can then manually synchronize failover replication slots by calling the pg_sync_replication_slots() function, or can configure automatic synchronization by setting the value of the sync_replication_slots parameter to true. When automatic synchronization is enabled, if a failover occurs, Debezium can immediately switch over to consuming events from the failover slot on the replica, and thus not miss any events.

To enable Debezium to consume events from a failover slot, set the value of the slot.failover property in the Debezium PostgreSQL connector configuration to true. This feature is available only if you configure Debezium to connect to the primary server in a cluster that runs PostgreSQL 17 or greater. Failover replication slots are not created for databases that run earlier PostgreSQL releases.

For more information, see Supported topologies and slot.failover in the Debezium PostgreSQL connector documentation.

1.4.3.7. CloudEvents converter (Technology Preview)

The CloudEvents converter emits change event records that conform to the CloudEvents specification. The CloudEvents change event envelope can be JSON or Avro and each envelope type supports JSON or Avro as the data format. For more information, see CloudEvents converter.

1.4.3.8. Custom converters (Technology Preview)

In cases where the default data type conversions do not meet your needs, you can create custom converters to use with a connector. For more information, see Custom-developed converters.

1.4.4. Developer Preview features

The following Developer Preview features are available in Debezium 3.0.8:

Important

Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview software for production or business-critical workloads. Developer Preview software provides early access to upcoming product software in advance of its possible inclusion in a Red Hat product offering. Customers can use this software to test functionality and provide feedback during the development process. This software might not have any documentation, is subject to change or removal at any time, and has received limited testing. Red Hat might provide ways to submit feedback on Developer Preview software without an associated SLA.

For more information about the support scope of Red Hat Developer Preview software, see Developer Preview Support Scope.

1.4.4.1. Debezium Server (Developer Preview)

This release continues to make the Debezium Server available as a Developer Preview feature. The Debezium Server is a ready-to-use application that streams change events from a data source directly to a configured Kafka or Redis data sink. Unlike the generally available Debezium connectors, the deployment of Debezium Server has no dependencies on Apache Kafka Connect. For more information about the Debezium Server Developer Preview, see the Debezium User Guide

1.4.4.2. Informix source connector (Developer Preview)

A Debezium source connector for Informix is now available as a Developer Preview feature.

The Debezium Informix source connector captures row-level changes from tables in an IBM Informix database. The connector is based on the Debezium Db2 connector, and uses the Informix Change Data Capture API for Java to capture transactional data. This API captures data from the current logical log and processes transactions sequentially.

The connector is compatible with Informix Database 12 and 14, and with version 4.50.11 of the Informix JDBC driver.

Important

Due to licensing requirements, the Debezium Informix connector archive does not include the Informix JDBC driver or the Change Stream client that Debezium requires to connect to an Informix database. Before you can use the connector, you must obtain the driver and the client library and add them to your connector environment.

Prerequisites

  • A database administrator must enable full row logging for the database and otherwise prepare the database and the database server for using the Change Data Capture API.
  • You have a copy of the Informix JDBC driver in your connector environment. The driver is available from Maven Central.
  • You have installed the Informix Change Streams API for Java.
    The Change Streams API for Java is packaged as part of the Informix JDBC installation, and is also available on Maven Central alongside the latest JDBC drivers. The API is required to enable CDC on the database.

Additional resources

1.4.4.3. MongoDB connector Developer Preview features

1.4.4.3.1. MongoDB sink connector (Developer Preview)

This release introduces a MongoDB sink connector implementation. The Debezium MongoDB sink connector differs from other vendor implementations in that it can ingest raw change events emitted by Debezium connectors without first applying an event flattening transformation. The MongoDB sink connector can take advantage of native Debezium source connector features, such as column type propagation, enabling you to potentially reduce the processing footprint of your data pipeline, and simplify its configuration.

Unlike the JDBC sink relational connector that requires an additional plug-in to be installed to use it, the MongoDB sink connector is bundled alongside the MongoDB source connector in the same artifact. So if you install the Debezium 3.0.8 MongoDB source connector, you also have the MongoDB sink connector.

Minimal configuration is required to get started with the MongoDB sink connector, for example:

{
  "connector.class": "io.debezium.connector.mongodb.MongoDbSinkConnector",
  "connection.string": "...",
  "topics": "topic1,topic2",
  "sink.database": "targetdb"
}

The following configuration properties are mandatory:

connection.string

Provides the details for connecting to the MongoDB sink database.

sink.database

Provides the name of the target database where the changes will be written.

topics

Specifies a comma-separated list of regular expressions that describe the topics from which the sink connector reads event records.

Note

Documentation for this connector is under development.

1.4.4.4. MariaDB and MySQL connector Developer Preview features

1.4.4.4.1. MySQL parallel schema snapshots (Developer Preview) (DBZ-6472)

The ability to use parallel schema snapshots with the MySQL connector continues to be provided as a Developer Preview feature.

To improve snapshot performance, the MySQL connector implements parallelization to concurrently snapshot change events and generate schema events for tables. By running snapshots and generating schema events in parallel, the connector reduces the time required to capture the schema for many tables in your database.

1.4.4.4.2. MariaDB and MySQL parallel initial snapshots (Developer Preview)

The Debezium initial snapshot for MySQL has always been single-threaded. This limitation primarily stems from the complexities of ensuring data consistency across multiple transactions.

In this release, you can configure a MySQL connector to use multiple threads to execute table-level snapshots in parallel.

In order to take advantage of this new feature, add the snapshot.max.threads property to the connector configuration, and set the property to a value greater than 1.

Example 1.1. Example configuration using parallel snapshots

snapshot.max.threads=4

Based on the configuration in the preceding example, the connector can snapshot a maximum of four tables at once. If the number of tables to snapshot is greater than four, after a thread finishes processing one of the first four tables, it then finds the next table in the queue and begins to perform a snapshot. The process continues until the connector finishes performing snapshots on all of the designated tables.

For more information, see snapshot.max.threads in the Debezium User Guide.

1.4.4.5. Oracle connector Developer Preview features

1.4.4.5.1. Ingesting changes from a logical standby (Developer Preview)

The ability for the Oracle connector to capture changes from a logical standby continues to be available as a Developer Preview feature. When the Debezium connector for Oracle connects to a production or primary database, it uses an internal flush table to manage the flush cycles of the Oracle Log Writer Buffer (LGWR) process. The flush process requires that the user account through which the connector accesses the database has permission to create and write to this flush table. However, logical stand-by databases often have restrictive data manipulation rules, and may even be read-only. As a result, writing to the database might not be feasible.

To support an Oracle read-only logical stand-by database, Debezium introduces a property to disable the creation and management of the flush table. You can use this feature with both Oracle Standalone and Oracle RAC installations.

To enable the Oracle connector to use a read-only logical stand-by, add the following connector option:

internal.log.mining.read.only=true

For more information, see the Oracle connector documentation in the Debezium User Guide.

1.4.4.6. PostgreSQL connector Developer Preview features

1.4.4.6.1. Exactly-once delivery for PostgreSQL streaming (Developer Preview)

In this release, Debezium continues to provide exactly-once semantics for the PostgreSQL connector as a Developer Preview feature. Exactly-once delivery for PostgreSQL applies only to the streaming phase; exactly-once delivery does not apply to snapshots.

Debezium was designed to provide at-least-once delivery with a goal of ensuring that connectors capture all change events that occur in the monitored sources. In KIP-618 the Apache Kafka community proposes a solution to address problems that occur when a producer retries a message. Source connectors sometimes resend batches of events to the Kafka broker, even after the broker previously committed the batch. This situation can result in duplicate events being sent to consumers (sink connectors), which can cause problems for consumers that do not handle duplicates easily.

No connector configuration changes are required to enable exactly-once delivery. However, exactly-once delivery must be configured in your Kafka Connect worker configuration. For information about setting the required Kafka Connect configuration properties, see KIP-618.

Note

To set exactly.once.support to required in the Kafka worker configuration, all connectors in the Kafka Connect cluster must supports exactly-once delivery, If you attempt to set this option in a cluster in which workers do not consistently support exactly-once delivery, the connectors that do not support this feature fail validation at start-up.

1.4.5. Other updates in this release

This Debezium 3.0.8 release provides multiple other feature updates and fixes. For a complete list, see the Debezium 3.0.8 Enhancement Advisory (RHEA-2025:147677).

1.5. Deprecated features

The following features are deprecated and will be removed in a future release:

Deprecation of schema_only and schema_only_recovery snapshot modes
  • The schema_only_recovery mode is deprecated and is replaced by the recovery mode.
  • The schema_only mode is deprecated and is replaced by the no_data mode.
Important

The current release continues to include the deprecated snapshot modes, but they are scheduled for removal in a future release. To prepare for their removal, adjust any scripts, configurations, and processes that depend on these deprecated modes.

For information about features that were deprecated in the previous release, see the 2.7.3 Release Notes

1.6. Known issues

The following known issues are present in Debezium 3.0.8:

Parallel initial snapshot exception when snapshot for one table is slow (DBZ-7932)
In some environments, failures can occur when a SQL-based connector is configured to run parallel initial snapshots. This occurs because the time required to complete a snapshot for one table is significantly greater than the time required to complete snapshots for other tables. As a result, the threads for the completed snapshots remain idle for an extended interval, so that the connector is unable to gracefully close the connection. The inability to close the connection can result in an incomplete snapshot, even if all data is sent successfully. Environments are more susceptible to this problem if they include a network device that terminates idle connections to the database, such as a load balancer or firewall.

If you experience this problem, by reverting the value of snapshot.max.threads to 1.
Negative binlog position values for MariaDB (DBZ-8755)
A new binary log format was introduced in MariaDB 11.4. Debezium cannot consume events in this new format. If Debezium connects to a database that runs MariaDB 11.4 or later, you must set the MariaDB server variable binlog_legacy_event_pos to 1 (ON) to ensure that the connector can consume events in the new format. If you leave this variable at its default setting (0, or OFF), after a connector restart, Debezium might not be able to find the resume point.
Apicurio registry endless rebalance loop on Kafka
For more information, see Apicurio registry 2.4.3 and 2.4.4 causes endless rebalance loop on Kafka
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.