红帽构建的 Debezium 3.0.8 发行注记
第 1 章 Debezium 3.0.8 发行注记 复制链接链接已复制到粘贴板!
Debezium 是一个分布式更改数据捕获平台,捕获数据库表中发生的行级更改,然后将对应的更改事件记录传递给 Apache Kafka 主题。应用程序可以读取 这些更改事件流,并按发生更改事件的顺序访问更改事件。Debezium 基于 Apache Kafka 构建,并在 OpenShift Container Platform 或 Red Hat Enterprise Linux 上部署并与 Streams for Apache Kafka 集成。
以下主题提供发行详情:
1.1. Debezium 数据库连接器 复制链接链接已复制到粘贴板!
Debezium 提供基于 Kafka Connect 的源连接器和接收器连接器。连接器可用于以下通用数据库:
- 源连接器
- Db2
- Informix (开发者预览)
- MariaDB
- MongoDB
- MySQL
- Oracle
- PostgreSQL
- SQL Server
- sink 连接器
- JDBC sink 连接器
- MongoDB sink 连接器(开发者预览)
1.1.1. 连接器使用备注 复制链接链接已复制到粘贴板!
- Db2
-
Debezium Db2 连接器不包括 Db2 JDBC 驱动程序(
jcc-11.5.0.0.jar)。如需有关如何 部署必要 JDBC 驱动程序的信息,请参阅 Db2 连接器部署说明。 - Db2 连接器需要使用抽象语法表示法(ASN)库,该库作为 Linux 的 Db2 的标准部分提供。
- 要使用 ASN 库,您必须有 IBM InfoSphere Data Replication (IIDR)的许可证。您不必安装 IIDR 来使用库。
-
Debezium Db2 连接器不包括 Db2 JDBC 驱动程序(
- Oracle
-
Debezium Oracle 连接器不包括 Oracle JDBC 驱动程序(21.
6.0.0)。如需有关如何 部署必要 JDBC 驱动程序的信息,请参阅 Oracle 连接器部署说明。
-
Debezium Oracle 连接器不包括 Oracle JDBC 驱动程序(21.
- PostgreSQL
-
要使用 Debezium PostgreSQL 连接器,您必须使用
pgoutput逻辑解码输出插件,这是 PostgreSQL 版本 10 及之后的版本的默认值。
-
要使用 Debezium PostgreSQL 连接器,您必须使用
1.2. Debezium 支持的配置 复制链接链接已复制到粘贴板!
有关 Debezium 支持的配置的详情,包括支持的数据库版本的信息,请参阅 Debezium 3.0.8 支持的配置页面。
1.3. Debezium 安装选项 复制链接链接已复制到粘贴板!
您可以在 OpenShift 或 Red Hat Enterprise Linux 上使用 Streams for Apache Kafka 安装 Debezium:
1.4. Debezium 3.0.8 的功能和改进 复制链接链接已复制到粘贴板!
1.4.1. 可能会造成问题的更改 复制链接链接已复制到粘贴板!
破坏更改代表了连接器行为的显著区别,或者需要与早期 Debezium 版本不兼容的配置更改。
Debezium 3.0.8 引入了影响以下组件的破坏更改:
有关在以前的 Debezium 发行版本中中断更改的详情,请参考 Debezium 2.7.3 发行注记。
1.4.1.1. 破坏与所有连接器相关的更改 复制链接链接已复制到粘贴板!
以下有问题的更改适用于所有连接器:
1.4.1.1.1. Java 17 是必需的 复制链接链接已复制到粘贴板!
运行 Debezium 的 Java 要求已更改。从这个版本开始,所有 Debezium 连接器都需要 Java 17 运行时基准。
如果您将 Java 11 与新连接器搭配使用,则 Kafka Connect 静默无法找到连接器。连接器不会报告任何字节代码错误
要运行 Debezium 服务器,需要一个 Java 21 的运行时基准。
1.4.1.1.2. Kafka 信号在重启后不再自动重新处理(DBZ-7856) 复制链接链接已复制到粘贴板!
在以前的版本中,在连接器重启后,Debezium 会自动重新处理基于 Kafka 的信号,这可能会导致意外的副作用。从这个版本开始,如果连接器停止,并且希望处理基于 Kafka 的信号,您必须重新提交信号。
1.4.1.1.3. 弃用的增量 附加条件 信号字段被删除(DBZ-8278) 复制链接链接已复制到粘贴板!
增量快照信号的已弃用的 additional-condition 字段已被删除,并不再被支持。此字段被新的 additional-conditions 属性替代,它允许您根据表指定条件。如果有引用旧字段的脚本或工作流,请更新它们以使用新属性。
1.4.1.2. MariaDB/MySQL 连接器破坏更改 复制链接链接已复制到粘贴板!
1.4.1.2.1. MariaDB 和 MySQL 模式历史记录属性记录的默认值不正确(DBZ-8558) 复制链接链接已复制到粘贴板!
MariaDB 和 MysSQL 文档的早期版本为 schema.history.internal.store.only.captured.databases.ddl 属性提供了不正确的默认值。正确的默认值为 false。
虽然这个更改不会影响代码,但如果您之前设置了此属性,请检查您当前的配置以验证它是否最适合您的环境。如需更多信息,请参阅 Debezium 用户指南。
1.4.1.3. Oracle 连接器破坏更改 复制链接链接已复制到粘贴板!
1.4.1.3.1. 新的默认 mining 策略(DBZ-3656) 复制链接链接已复制到粘贴板!
Oracle 连接器的默认 mining 策略现在是 online_catalog。如果您之前依赖于默认的 redo_log_catalog 策略,并且希望继续使用该策略,您必须在连接器配置中明确指定它。
如需更多信息,请参阅:第 1.4.2.3.1 节 “新的默认 mining 策略(DBZ-3656)”。
1.4.1.3.2. 删除已弃用的配置属性(DBZ-8181)。 复制链接链接已复制到粘贴板!
现在,在之前的发行版本中弃用的以下 Oracle 连接器配置属性已在 Debezium 3.0.8: 中删除:
-
log.mining.transaction.retention.hours被log.mining.transaction.retention.ms替代 -
log.mining.archive.destination.name被archive.destination.name替代 log.mining.archive.log.hours被archive.log.hours替代如果您之前为连接器设置上述任何属性,请升级后,更新连接器配置以使用新的等效属性。
1.4.1.3.3. Reselect 列对 Oracle 的处理器行为变化(DBZ-8653) 复制链接链接已复制到粘贴板!
ReselectColumnsPostProcessor 行为已更改。在本发行版本中,后处理器现在重新选择 Oracle LOB 列,而不考虑 lob.enabled 配置属性的值。在这个版本中,您可以使用列 reselection post processer 来填充 LOB 列,而无需在流过程中减去这些列。
1.4.2. 正式发行(GA)功能 复制链接链接已复制到粘贴板!
Debezium 3.0.8 为以下连接器提供新功能:
1.4.2.1. 提升到正式发行(GA)的功能 复制链接链接已复制到粘贴板!
在 Debezium 3.0.8 发行版本中,以下功能从技术预览提升到正式发布:
1.4.2.1.1. MariaDB 的 Debezium 连接器(DBZ-7693) 复制链接链接已复制到粘贴板!
现在完全支持 MariaDB 的独立连接器实现。
1.4.2.1.2. 使用带有 Oracle 连接器的大型数据类型(BLOB、CLOB 和 NCLOB) 复制链接链接已复制到粘贴板!
Oracle 连接器现在提供对处理 BLOB、CLOB 和 NCLOB 数据类型的完全支持。如需更多信息,请参阅 Debezium 用户指南中的 Oracle 二进制和字符 LOB 类型。
1.4.2.1.3. 基于 SQL 的连接器的并行初始快照 复制链接链接已复制到粘贴板!
现在,所有 Debezium SQL 连接器都提供了使用多个并行线程来执行初始快照的功能,但 MySQL 和 MariaDB 除外。Debezium MariaDB 和 MySQL 连接器的并行初始快照 作为开发者预览功能提供。
要将连接器配置为使用并行初始快照,请将连接器配置中的 snapshot.max.threads 属性设置为大于 1 的值。
如需更多信息,请参阅 Debezium 用户指南文档中的 snapshot.max.threads 部分。
在某些环境中,增加 snapshot.max.threads 的值可能会导致快照失败。
如需更多信息,请参阅 第 1.6 节 “已知问题”。
1.4.2.2. JDBC sink 连接器 GA 功能 复制链接链接已复制到粘贴板!
1.4.2.2.1. 特定故障上的 JDBC 重试清除(DBZ-7291) 复制链接链接已复制到粘贴板!
JDBC sink 连接器使用一组缓冲区来提高写入目标数据库的吞吐量。在某些情况下,当其他应用程序锁定特定行或表时,这些缓冲区的清除操作会面临特定的异常。为了提高用户体验,现在连接器有两个配置属性:
flush.max.retries- 定义在发生 flush 失败时重试次数。
flush.retry.delay.ms- 定义重试之间等待的毫秒数。
重试功能默认为启用。连接器尝试最多 5 次尝试重试清除操作,在重试尝试之间有一个 1 秒的延迟。如果您不希望连接器重试清除操作,请将 flush.max.retries 设置为 0 来禁用此功能。
1.4.2.3. Oracle 连接器 GA 功能 复制链接链接已复制到粘贴板!
1.4.2.3.1. 新的默认 mining 策略(DBZ-3656) 复制链接链接已复制到粘贴板!
在 Debezium 3.0.8 中,Oracle 连接器 log.mining.strategy 属性的默认值已从 redo_log_catalog 改为通常更高性能的 online_catalog 选项。如果您之前使用默认的 redo_log_catalog 策略,并且希望在升级到当前版本后保留该设置,您必须将 log.mining.strategy 属性的值明确设置为 redo_log_catalog。
其他资源
- Debezium 用户指南中的 Oracle LogMiner mining 策略。
- Oracle 连接器常见问题 中 各种 mining 策略之间的区别是什么?
1.4.2.3.2. Oracle 离线 RAC 节点冲刷改进(DBZ-8177) 复制链接链接已复制到粘贴板!
在早期版本中,Oracle RAC 节点清除策略被修改为强制在数据库管理员关闭 Oracle RAC 节点时强制进行 3 秒的延迟。在这个暂停过程中,连接器会尝试清除日志写入器(LGWR)进程。但是,即使在未刷新 LGWR 缓冲区时,暂停也会实现。因为 RAC 节点在离线时无法写入 redo 日志,所以这个延迟引入了不必要的延迟。
在 Debezium 3.0.8 中,为了提高稳定性,现在只对激活到 Oracle RAC 节点的连接施加 3 秒延迟。因此,在管理员将 RAC 节点离线后,连接器将不再实施任何延迟。
1.4.2.3.3. Oracle CLOB/BLOB 默认值支持(DBZ-8248) 复制链接链接已复制到粘贴板!
在 Oracle 中,要确保 LOB 列不是 NULL,您可以使用 EMPTY_CLOB ()或 EMPTY_BLOB ()函数 在表中指定 CLOB 或 BLOB 字段的默认值。之前的 Debezium 版本没有评估这些特殊功能,这会导致连接器将这些列标记为可选,因为它们可以包含 null 值。
从 Debezium 3.0.8 开始,当您使用 EMPTY_BLOB () 或 EMPTY_CLOB () 函数定义 Oracle BLOB 列的默认值时,连接器现在发出该字段为不可选。生成的更改事件中的字段包含适当的默认值,可以是空字节数组或空字符串。
1.4.2.4. PostgreSQL 连接器 GA 功能 复制链接链接已复制到粘贴板!
1.4.2.4.1. PostgreSQL 的快照隔离(DBZ-1252) 复制链接链接已复制到粘贴板!
通过添加新的连接器配置属性 snapshot.isolation.mode,此功能解决了为 PostgreSQL 提供快照隔离支持的长期请求。现在,您可以通过指定四个快照隔离级别之一来指定在执行初始和临时阻塞快照时如何平衡对一致性和性能的需求:
-
serializable(默认) -
repeatable_read -
read_committed -
read_uncommitted
这些隔离级别指定快照 的一致性,以及应用到源数据的锁定类型(若有),当连接器在快照过程中读取它时。
例如,您可以将 snapshot.isolation.mode 设置为 serializable 来强制执行严格的隔离和锁定,防止管理员和用户在创建快照时执行此类操作。或者,您可以应用最严格的 read_uncommitted 设置,这允许快照从尚未提交的用户事务中读取数据。允许所知的"dirty 读取",可能会导致数据不一致,但同时,因为数据没有锁定,因此快照不会干扰数据库性能。
如需更多信息,请参阅 PostgreSQL 连接器文档中的 snapshot.isolation.mode。
1.4.2.4.2. 支持 PostgreSQL pgvector 数据类型(DBZ-8121) 复制链接链接已复制到粘贴板!
PostgreSQL 15 引入了 pgvector 扩展,它提供以下数据类型:
-
vector -
halfvec -
sparsevec
从 Debezium 3.0.8 开始,PostgreSQL 连接器支持流传输使用这些 pgvector 数据类型的事件。当连接器为涉及其中一个数据类型的操作发出更改事件记录时,它会根据以下列表中的映射将源中的每个向量类型转换为语义类型:
-
向量:映射到数字值的ARRAY。 -
halfvec:映射到数字值的ARRAY。 sparsevec:映射到包含以下成员的Struct:- 向量中的维度数量。
- 代表向量元素位置的索引。
在数据库中启用 pgvector 扩展后,Debezium 不需要进一步配置来转换向量值。如需更多信息,请参阅 PostgreSQL 连接器文档中的 pgvector 类型。
1.4.2.5. SQL Server 连接器 GA 功能 复制链接链接已复制到粘贴板!
1.4.2.5.1. 支持从 TDE 加密 SQL Server 数据库捕获数据(DBZ-4590) 复制链接链接已复制到粘贴板!
透明数据加密(TDE) 在 SQL Server 2017 Enterprise Edition 及 SQL Server 2019 和 2022 年的 Standard Edition 和 Enterprise Edition 中都提供。顾名思义,TDE 会自动运行,并透明地在数据库和事务日志中加密数据。如果为数据库启用了 TDE,则未授权用户无法读取数据。同时,授权用户访问不会受到影响,包括由正确配置的 Debezium SQL Server 连接器访问。不需要特殊的配置才能使 Debezium 流传输启用了 TDE 的 SQL Server 数据库的更改。也就是说,如果连接器可以连接到未为 TDE 启用的数据库,并且稍后数据库启用了 TDE,原始连接器配置仍可以正常工作。
现在,当您部署单个连接器来流传输来自多个 SQL Server 数据库的更改时,可以唯一标识每个数据库任务的信号频道。
更改了 Debezium SQL Server 连接器在信号和通知操作中使用的 MBean 名称格式,以确保每个任务的唯一性。普通的 JMX 指标通过 taskId 属性注册,因为 SQL Server 支持为每个数据库映射生成唯一的任务。在过去的版本中,JMX 信号频道不符合此目的,这可能会阻止连接器为每个任务启动频道。将 taskId 添加到 MBean 名称后,连接器可在这些操作 span 数据库时使用多个任务。如需更多信息,请参阅 Debezium 用户指南中的 Debezium SQL Server 连接器模式历史记录指标。
1.4.2.5.3. 更新 SQL Server 文档以更正模式历史记录 MBean 名称(DBZ-8840) 复制链接链接已复制到粘贴板!
Debezium SQL Server 连接器的文档现在可以正确地描述 模式历史记录 MBean 名称 的格式。更新的 description 指定名称现在包含快照和流指标 MBean 名称中存在的相同 任务 属性。
1.4.2.6. 处理器和单一消息转换(SMT) GA 功能 复制链接链接已复制到粘贴板!
1.4.2.6.1. 单一消息转换(SMT)解码 PostgreSQL 逻辑消息(DBZ-8103) 复制链接链接已复制到粘贴板!
PostgreSQL 是唯一的,您可以在不创建 outbox 表的情况下实施 Outbox 模式。相反,数据库可以使用 pg_logical_emit_message 函数将逻辑消息直接写入 write-ahead 日志(WAL)。但是,当 Debezium 从 WAL 捕获这些事件时,它发送到 Kafka 的数据会被格式化为一系列字节。消耗需要结构化消息的应用程序可能无法消耗此格式的数据。
新的 Logical message decoder SMT (DecodeLogicalDecodingMessageContent)是一个特定于 PostgreSQL 的单消息转换。这个转换旨在将 pg_logical_emit_message 事件字节转换为结构化事件格式,以便消耗应用程序可以处理它们。这样,您可以在不创建物理出箱表的情况下实施 Outbox 模式。如需更多信息,请参阅 Debezium 用户指南中的 PostgreSQL 逻辑解码消息中的解码二进制内容。
1.4.2.6.2. Reselect column 处理器改进(DBZ-8212) 复制链接链接已复制到粘贴板!
要存储其大小超过列的标准容量的数据类型,一些数据库使用专用机制将过度化数据存储在主表之外的外部位置。例如,PostgreSQL 使用 Oversized-Attribute Storage Technique (TOAST),Oracle 使用大对象(LOB)存储或 Oracle Exadata Extended Strings。
默认情况下,当 Debezium 发出事件记录以响应包含 oversized 数据字段的表行中更改时,生成的事件记录只会包括由 SQL 操作更改的数据字段的值。只有在表操作修改 oversized data 列的值时,连接器才会填充这些值。如果过度化数据列的值保持不变,连接器会为字段插入占位符。此占位符错误地表示字段不包含值。
引进了 ReselectColumnsPostProcessor,用于在更改事件记录中填充过度数据字段的值。此后处理器现在支持对 int 和 bigint 数组数据类型的重新选择,因此这些字段始终会被填充,即使它们的值在 SQL 操作后保持不变。
1.4.3. 技术预览功能 复制链接链接已复制到粘贴板!
Debezium 3.0.8 中提供了以下技术预览功能:
- 第 1.4.3.1 节 “MongoDB collection-scoped streaming (技术预览)(DBZ-7760)”
- 第 1.4.3.2 节 “支持 MySQL vector 数据类型(技术预览)(DBZ-8157)”
- 第 1.4.3.3 节 “与 Oracle 数据库 23ai 兼容(技术预览)”
- 第 1.4.3.4 节 “支持 Oracle EXTENDED 字符串大小(技术预览)(DBZ-8039)”
- 第 1.4.3.5 节 “将 XML 数据类型与 Oracle 连接器一起使用(技术预览)”
- 第 1.4.3.6 节 “支持 PostgreSQL 17 故障转移复制插槽(技术预览)(DBZ-8412)”
- 第 1.4.3.7 节 “CloudEvents 转换程序(技术预览)”
- 第 1.4.3.8 节 “自定义转换器(技术预览)”
技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中实施任何技术预览功能。技术预览功能为用户提供了一个对最新的产品创新的试用机会,以便用户可以对其进行测试并提供反馈。如需有关支持范围的更多信息,请参阅 技术预览功能支持范围。
此功能从开发者预览提升到技术预览。
在 Debezium MongoDB 连接器的之前迭代中,可以对部署和数据库范围打开更改流,这并不总是适用于限制的权限环境。Debezium 3.0.8 引入了一个新的更改流模式,连接器仅在单个集合范围内运行,从而允许这种精细的 permissive 配置。
要将 MongoDB 连接器的捕获范围限制为特定的集合,请将连接器配置中的 capture.scope 属性的值设置为 集合。当您打算使连接器只从单个 MongoDB 集合中捕获更改时,请使用此设置。
限制:
使用此功能时存在某些限制。如果将 capture.scope 属性的值设置为 collection,则连接器无法使用默认的 源 信号 频道。需要为连接器启用 源 频道来允许处理增量快照信号,包括通过 Kafka、JMX 或 File 频道发送的信号。因此,如果您将连接器配置中的 capture-scope 属性的值设置为 集合,则连接器无法执行增量快照。
1.4.3.2. 支持 MySQL vector 数据类型(技术预览)(DBZ-8157) 复制链接链接已复制到粘贴板!
Debezium MySQL grammar 现在处理向量功能。在这个版本中,Debezium MySQL 连接器可以处理 MySQL 9.0 中提供的新的 VECTOR (n) 数据类型。有关 Debezium 如何处理 Vector 类型的更多信息,请参阅 MySQL 连接器文档。
1.4.3.3. 与 Oracle 数据库 23ai 兼容(技术预览) 复制链接链接已复制到粘贴板!
此 Debezium 发行版本将继续提供与 Oracle 23ai 作为技术预览功能的集成。
1.4.3.4. 支持 Oracle EXTENDED 字符串大小(技术预览)(DBZ-8039) 复制链接链接已复制到粘贴板!
在 Oracle 12c 中,您可以将数据库参数 max_string_size 设置为 EXTENDED,以启用使用扩展字符串,将字符数据类型从 4000 字节增加到 32K。当启用扩展字符串时,您不必使用基于 CLOB 的操作来处理最多 32K 的字符数据。反之,您可以使用与字符数据相同的语法,其字符数据为 4000 字节或更少。
在 Debezium 3.0.8 中,Oracle 连接器现在可以直接从使用扩展字符串的数据库的日志日志中捕获更改。由于扩展字符串是有效的 CLOB 操作,所以要减去这些列类型,所以您必须将 lob.enabled 设置为 true。
有关扩展字符串大小的连接器支持的更多信息,请参阅 Debezium 用户指南中的 Oracle 连接器文档。
当 Oracle 配置为使用 EXTENDED 字符串大小时,LogMiner 有时无法在扩展字符串字段中转义单引号。因此,这些字段的值可以被截断,从而导致 Oracle 连接器无法解析无效 SQL 语句。
如需更多信息,请参阅 DBZ-8034。
要缓解这个问题,您可以将连接器配置为 relax 单引号检测,方法是将以下属性设置为 true:internal.log.mining.sql.relaxed.quote.detection
虽然此内部设置可能会帮助解决某些问题实例,但其使用目前还不支持的功能。
1.4.3.5. 将 XML 数据类型与 Oracle 连接器一起使用(技术预览) 复制链接链接已复制到粘贴板!
Debezium Oracle 连接器可以处理 Oracle 用来处理数据库中 XML 数据的 XMLType 数据类型。
有关连接器用于 Oracle XMLTYPE 的映射的详情,请参考连接器文档中的 XML 类型。
1.4.3.6. 支持 PostgreSQL 17 故障转移复制插槽(技术预览)(DBZ-8412) 复制链接链接已复制到粘贴板!
PostgreSQL 17 添加了对 故障转移插槽 的支持,即自动同步到备用服务器的复制插槽。
当您在集群中的主 PostgreSQL 服务器上创建复制插槽时,您可以将其配置为复制到故障转移副本。然后,PostgreSQL 管理员可以通过调用 pg_sync_replication_slots () 函数来 手动同步故障转移复制插槽,也可以通过将 sync_replication_slots 参数的值设置为 true 来配置自动同步。启用自动同步时,如果发生故障转移,Debezium 可以立即切换到消耗副本上的故障转移插槽中的事件,因此不会丢失任何事件。
要启用 Debezium 来消耗故障转移插槽中的事件,请将 Debezium PostgreSQL 连接器配置中的 slot.failover 属性的值设置为 true。只有在将 Debezium 配置为连接到运行 PostgreSQL 17 或更高版本的集群中的主服务器时,此功能才可用。对于运行早期 PostgreSQL 版本的数据库,不会创建故障转移复制插槽。
如需更多信息,请参阅 Debezium PostgreSQL 连接器文档中的 支持 的拓扑和 slot.failover。
1.4.3.7. CloudEvents 转换程序(技术预览) 复制链接链接已复制到粘贴板!
CloudEvents converter 会发出符合 CloudEvents 规格的更改事件记录。CloudEvents 更改事件信封可以是 JSON 或 Avro,每个信封类型支持 JSON 或 Avro 作为 数据格式。如需更多信息,请参阅 CloudEvents 转换程序。
1.4.3.8. 自定义转换器(技术预览) 复制链接链接已复制到粘贴板!
如果默认数据类型转换不满足您的需要,您可以创建自定义转换器以用于连接器。如需更多信息,请参阅 Custom-developed converters。
1.4.4. 开发人员预览功能 复制链接链接已复制到粘贴板!
Debezium 3.0.8 中提供了以下开发人员预览功能:
红帽不支持开发人员预览功能,且功能完整或生产就绪。不要将开发人员预览软件用于生产环境或关键业务工作负载。开发人员预览软件提供早期对即将推出的产品软件的访问权限,以将其包括在红帽产品产品中。客户可以使用此软件来测试功能并在开发过程中提供反馈。此软件可能没有任何文档,可以随时更改或删除,并且已获得有限的测试。红帽可能会提供在没有关联 SLA 的情况下对开发者预览软件提交反馈的方法。
有关 Red Hat Developer Preview 软件的支持范围的更多信息,请参阅 开发人员预览支持范围。
1.4.4.1. Debezium Server (开发者预览) 复制链接链接已复制到粘贴板!
此发行版本将继续使 Debezium 服务器作为开发者预览功能提供。Debezium 服务器是一个随时可用的应用程序,它将事件从数据源直接更改为配置的 Kafka 或 Redis 数据接收器。与通常可用的 Debezium 连接器不同,Debebe 服务器部署没有 Apache Kafka Connect 的依赖项。如需有关 Debezium 服务器开发者预览的更多信息,请参阅 Debezium 用户指南
1.4.4.2. Informix 源连接器(开发者预览) 复制链接链接已复制到粘贴板!
Informix 的 Debezium 源连接器现在作为开发者预览功能提供。
Debezium Informix 源连接器从 IBM Informix 数据库中表捕获行级更改。连接器基于 Debezium Db2 连接器,并使用 Informix Change Data Capture API for Java 捕获事务数据。此 API 从当前逻辑日志和按顺序处理事务中捕获数据。
连接器与 Informix Database 12 和 14 兼容,版本 4.50.11 与 Informix JDBC 驱动程序的版本 4.50.11 兼容。
由于许可证要求,Debezium Informix 连接器存档不包括 Informix JDBC 驱动程序或 Debezium 需要连接到 Informix 数据库的 Change Stream 客户端。在使用连接器前,您必须获取驱动程序和客户端库,并将其添加到连接器环境中。
先决条件
- 数据库管理员必须为数据库启用全行日志记录,否则准备数据库和数据库服务器,以使用 Change Data Capture API。
- 在连接器环境中有 Informix JDBC 驱动程序的副本。该驱动程序包括在 Maven Central 中。
-
您已安装了 用于 Java 的 Informix Change Streams API。
Java 的 Change Streams API 作为 Informix JDBC 安装的一部分打包,它也在 Maven Central 以及最新的 JDBC 驱动程序上提供。在数据库上启用 CDC 需要 API。
其他资源
- 准备使用更改数据捕获 API ( IBM Informix 文档)。
- Debezium Informix 连接器文档 (debezium.io 社区版本)。
1.4.4.3. MongoDB 连接器开发人员预览功能 复制链接链接已复制到粘贴板!
1.4.4.3.1. MongoDB sink 连接器(开发者预览) 复制链接链接已复制到粘贴板!
此发行版本引入了 MongoDB sink 连接器实现。Debezium MongoDB sink 连接器与其他供应商实现不同,它可以获取 Debezium 连接器发出的最大原始更改事件,而无需首先应用事件扁平化转换。MongoDB sink 连接器可以利用原生 Debezium 源连接器功能,如列类型传播,使您能够减少数据管道的处理空间,并简化其配置。
与需要安装额外插件的 JDBC 接收器关系连接器不同,MongoDB sink 连接器与同一工件中的 MongoDB 源连接器捆绑在一起。因此,如果您安装 Debezium 3.0.8 MongoDB 源连接器,您也可以有 MongoDB sink 连接器。
需要最小配置才能使用 MongoDB sink 连接器开始,例如:
以下配置属性是必需的:
|
| 提供连接到 MongoDB sink 数据库的详情。 |
|
| 提供要写入更改的目标数据库的名称。 |
|
| 指定以逗号分隔的正则表达式列表,用于描述接收器连接器读取事件记录的主题。 |
此连接器的文档正在开发中。
1.4.4.4. MariaDB 和 MySQL 连接器开发人员预览功能 复制链接链接已复制到粘贴板!
1.4.4.4.1. MySQL 并行模式快照(开发者预览)(DBZ-6472) 复制链接链接已复制到粘贴板!
在 MySQL 连接器中使用并行模式快照的功能仍作为开发者技术预览功能提供。
为了提高快照性能,MySQL 连接器实施并行化为并发快照更改事件,并为表生成 schema 事件。通过并行运行快照并生成模式事件,连接器减少了捕获数据库中许多表模式所需的时间。
1.4.4.4.2. MariaDB 和 MySQL 并行初始快照(开发者预览) 复制链接链接已复制到粘贴板!
MySQL 的 Debezium 初始快照始终为单线程。这种限制主要源自确保多个事务间数据一致性的复杂性。
在本发行版本中,您可以将 MySQL 连接器配置为使用多个线程来并行执行表级快照。
要利用这个新功能,将 snapshot.max.threads 属性添加到连接器配置,并将 属性设置为大于 1 的值。
例 1.1. 使用并行快照的示例配置
snapshot.max.threads=4
snapshot.max.threads=4
根据上例中的配置,连接器可以一次性快照最多四个表。如果快照的表数量大于 4,在线程完成处理前四个表后,它会在队列中找到下一个表并开始执行快照。进程将继续,直到连接器完成所有指定表上执行快照。
如需更多信息,请参阅 Debezium 用户指南中的 snapshot.max.threads。
1.4.4.5. Oracle 连接器开发人员预览功能 复制链接链接已复制到粘贴板!
1.4.4.5.1. 从逻辑待机(开发者预览)中分离更改. 复制链接链接已复制到粘贴板!
Oracle 连接器捕获逻辑待机更改的功能仍作为开发者预览功能提供。当 Oracle 的 Debezium 连接器连接到一个生产环境或主数据库时,它使用内部清除表来管理 Oracle Log Writer Buffer (LGWR)进程的清除周期。flush 进程要求用户帐户访问数据库具有创建和写入此清除表的权限。但是,逻辑支持的数据库通常具有限制性的数据操作规则,甚至可能是只读的。因此,写入数据库可能并不可行。
为了支持 Oracle 只读逻辑独立数据库,Debebe 引入了一个属性来禁用 flush 表的创建和管理。您可以将此功能用于 Oracle Standalone 和 Oracle RAC 安装。
要启用 Oracle 连接器使用只读逻辑 stand-by,请添加以下连接器选项:
internal.log.mining.read.only=true
internal.log.mining.read.only=true
如需更多信息,请参阅 Debezium 用户指南中的 Oracle 连接器文档。
1.4.4.6. PostgreSQL 连接器开发人员预览功能 复制链接链接已复制到粘贴板!
1.4.4.6.1. PostgreSQL 流的确切交付(开发者预览) 复制链接链接已复制到粘贴板!
在这个发行版本中,Debezium 继续为 PostgreSQL 连接器提供准确概念的语义,作为开发者预览功能。PostgreSQL 的完全一次交付仅适用于流阶段;完全交付不适用于快照。
Debezium 旨在提供最少一次交付,目的是确保连接器捕获受监控源中发生的所有更改事件。在 KIP-618 中,Apache Kafka 社区提出了解决方案,以解决生成者重试消息时发生的问题。源连接器有时会将事件批处理重新发送到 Kafka 代理,即使代理之前提交批处理。这种情况可能会导致向用户发送重复的事件(接收器连接器),这可能会导致无法轻松处理重复的用户出现问题。
不需要连接器配置更改才能启用完全一次交付。但是,必须在 Kafka Connect worker 配置中配置完全一次交付。有关设置所需的 Kafka Connect 配置属性的详情,请参考 KIP-618。
要设置 Kafka worker 配置中 所需的 exactly.once.support,Kafka Connect 集群中的所有连接器都必须支持完全一次交付,如果您试图在 worker 不持续支持一次交付的集群中设置这个选项,则不支持此功能的连接器启动时不支持此功能失败验证。
1.4.5. 这个版本中的其他更新 复制链接链接已复制到粘贴板!
这个 Debezium 3.0.8 发行版本提供了多个其他功能更新和修复。有关完整列表,请参阅 Debezium 3.0.8 增强公告(RHEA-2025:147677)。
1.5. 弃用的功能 复制链接链接已复制到粘贴板!
以下功能已弃用,并将在以后的发行版本中删除:
- 弃用 schema_only 和 schema_only_recovery 快照模式
-
schema_only_模式已弃用,并被恢复模式替代。recovery -
schema_only模式已弃用,并被no_data模式替代。
-
当前发行版本仍然包含已弃用的快照模式,但计划在以后的发行版本中删除。要准备其移除,请调整依赖于这些已弃用模式的任何脚本、配置和进程。
有关之前发行版本中弃用的功能的详情,请参考 2.7.3 发行注记
1.6. 已知问题 复制链接链接已复制到粘贴板!
Debezium 3.0.8: 中存在以下已知问题:
- 一个表的快照慢时并行初始快照异常(DBZ-7932)
-
在某些环境中,当基于 SQL 的连接器配置为运行并行初始快照时,可能会出现失败。这是因为完成一个表的快照所需的时间要显著大于完成其他表的快照所需的时间。因此,完成快照的线程会保持闲置的扩展间隔,因此连接器无法正常关闭连接。无法关闭连接可能会导致快照不完整,即使所有数据都成功发送。如果环境包括网络设备终止到数据库的空闲连接,如负载均衡器或防火墙,则环境更为容易。
如果您遇到这个问题,请将snapshot.max.threads的值恢复到1。 - MariaDB 的负 binlog 位置值(DBZ-8755)
-
MariaDB 11.4 中引入了一个新的二进制日志格式。Debezium 无法以这个新格式消耗事件。如果 Debezium 连接到运行 MariaDB 11.4 或更高版本的数据库,您必须将 MariaDB 服务器变量
binlog_legacy_event_pos设置为1(ON),以确保连接器以新格式消耗事件。如果您在连接器重启后保留此变量的默认值(0、或 OFF),Debezium 可能无法找到恢复点。 - Apicurio registry 在 Kafka 上结束重新平衡循环
- 如需更多信息,请参阅 Apicurio registry 2.4.3 和 2.4.4 会导致 Kafka 上无限重新平衡循环