正如我上周提到的,我们正处于下一个主要版本发布的最后冲刺阶段。我们很高兴地宣布下一个候选版本,Debezium 3.0.0.CR2!让我们快速了解一下这个新版本中的更改和改进……
新功能和改进
Debezium 3.0.0.CR2 引入了多项改进和新功能,让我们逐一来看。
PostgreSQL 隔离级别支持
JDBC 在特定故障时重试刷新
JDBC sink 使用一组缓冲区来提高写入目标数据库的吞吐量。在某些用例中,由于其他应用程序可能锁定了特定行或表,缓冲区刷新操作可能会遇到特定异常。为了改善用户体验,已添加了两个新的配置属性:
flush.failure.max.retries-
定义刷新失败时重试的次数。
flush.failure.retries.wait.ms-
定义每次重试之间的等待毫秒数。
重试功能默认启用,尝试最多重试 5 次,每次重试之间间隔 1 秒。如果您不希望启用重试,将 flush.failure.max.retries 设置为 0 将禁用此功能 (DBZ-7291)。
Oracle EXTENDED 最大字符串大小支持
Oracle 扩展字符串是一项功能,它允许将字符数据传统的 4000 字节限制提高到 32K。这是通过应用数据库升级来完成的,该升级将数据库参数 max_string_size 设置为 EXTENDED。然后,扩展字符串功能允许使用与 4000 字节或更小的字符数据相同的 SQL 语法来处理高达 32K 的字符数据,而无需强制您使用 CLOB 操作。
使用 Debezium 3,您现在可以将 Oracle 连接器与使用扩展字符串的数据库一起使用,并直接从事务日志捕获更改 (DBZ-8039)。由于数据库级别的扩展字符串实际上是 CLOB 操作,因此解析此类列类型需要将 lob.enabled 设置为 true。
由于此新功能尚处于实验阶段,我们非常希望听到社区的任何反馈!
Oracle CLOB/BLOB 默认值支持
在某些情况下,Oracle 用户可能会定义需要 CLOB 或 BLOB 的表,并在未提供字段时使用 EMPTY_BLOB() 或 EMPTY_CLOB() 函数来定义默认值。在之前的版本中,Debezium 并未评估这些特殊函数,因此此类列会被发出为可选字段,而不是必填字段。
从 Debezium 3 开始,当指定了 EMPTY_BLOB() 或 EMPTY_CLOB() 默认值时,该字段将被发出为必填字段。此外,该字段还将包含适当的默认值,分别为空字节数组或空字符串 (DBZ-8248)。
其他更改
-
Debezium 在抛出 ORA-00600 krvrdccs30 错误后不会自动重启 DBZ-8223
-
JDBC sink 未包含字段(与文档不符) DBZ-8224
-
Streams 文档中关于配置日志记录的链接损坏 DBZ-8231
-
为 JDBC 连接器的 passthrough hibernate.* 属性编写文档 DBZ-8232
-
异步引擎中的无限处理线程 DBZ-8237
-
流式指标在临时阻塞快照后卡住 DBZ-8238
-
DDL 语句无法解析 IF EXISTS DBZ-8240
-
默认使用随机引擎工厂 DBZ-8241
-
JDBC sink 测试套件应为 e2e 测试使用 debezium/connect:nightly 镜像 DBZ-8245
-
将 Infinispan 升级到 15.0.8.Final DBZ-8246
-
AbstractConnectorTest consumeRecordsUntil 可能会过早退出循环 DBZ-8250
-
Debezium Server Kafka 在 DBZ-7575 修复后出现性能回归 DBZ-8251
-
在文档中添加关于 JDBC 批量重试配置的说明 DBZ-8252
-
修复共享 MariaDB/MySQL 文件中的条件化 DBZ-8254
-
MySQL 连接器中包含 Error Prone 库 DBZ-8258
-
Debezium.text.ParsingException: DDL 语句无法解析 DBZ-8259
-
添加 Oracle FUTC 许可证 DBZ-8260
-
从产品程序集包中移除 Oracle 库 DBZ-8261
-
debezium-connector-binlog 不需要 MariaDB 依赖 DBZ-8263
-
为 Debezium Server 提供子集包 DBZ-8264
总而言之,此版本修复了 44 个问题。以下是一些其他值得注意的更改列表:
非常感谢社区中为这个版本做出贡献的所有人:Andrei Leibovski、Anisha Mohanty、Chris Cranford、Cody Holmes、Inki Hwang、Jiri Pechanec、Mario Fiore Vitale、Robert Roldan、Vojtěch Juránek,以及 martin!
下一步计划与展望?
最重要的是,假设没有出现关键问题,您应该会在下周看到 Debezium 3 的最终版本。随着我们开始迈向 2024 年的剩余时间,讨论今年剩余时间和 2025 年的未来计划至关重要。
在 2024 年剩余的时间里,团队将继续为 Debezium 3 提供维护和错误修复版本。这些版本将按照我们正常的节奏发布,大约每 2-3 周一次,除非报告或修复了问题。但是,本季度会有所变化的是,今年 12 月不会像往年那样发布小版本。做出这个决定是为了让团队能够专注于一系列“低垂的果实”活动,这些活动不一定直接与开发任务相关。
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。