距离 Debezium 2.5 最终版本发布只有一步之遥,我很高兴地宣布 Debezium 2.5.0.CR1 现已发布。此版本包含多项改进,如 Debezium Server 的 AWS SQS sink、用于增量快照水位标记的 INSERT/DELETE 语义、ReselectColumnsPostProcessor、统一的 Oracle LOB 行为。

此外,此版本还包含各种错误修复和一些重大更改。

让我们更详细地了解 Debezium 2.5.0.CR1 中包含的所有这些更改和改进;一如既往,您可以在 发行说明中找到此版本的完整更改列表。请记住,请特别注意任何可能影响您升级路径的重大更改。

重大变更

虽然我们努力避免破坏性更改,但有时为了朝着正确的方向发展,这些更改是不可避免的。此版本包含几项破坏性更改。

云事件头部的 Schema 名称

Cloud Event 头部的 schema 名称前缀和字母大小写与 payload 名称不一致。schema 名称已对齐,以便 header 和 payload 共享相同的命名空间并遵循相同的字母大小写规则 (DBZ-7216)。

MySQL BIT 默认长度

MySQL BIT 数据类型在未设置长度时没有隐式长度。这是不正确的,因为如果未提供长度,则默认长度为 1 (DBZ-7230)。

新功能和改进

Debezium 2.5 还引入了更多改进和功能,让我们逐一了解。

重新选择列

在某些情况下,由于某些源数据库的工作方式,当 Debezium 连接器发出变更事件时,该事件可能不包含特定列类型的值。例如,PostgreSQL 中的 TOAST 列、Oracle 中的 LOB 列或 Oracle Exadata 中的 Extended String 列的值都可能被排除。

Debezium 2.5 引入了 ReselectColumnsPostProcessor,提供了一种从数据库表中重新选择一个或多个列并获取当前状态的方法。您可以配置后处理器来重新选择以下列类型:

  • null 列。

  • 包含 unavailable.value.placeholder 占位符值 的列。

配置 PostProcessor 与配置 CustomConverter 或 Transformation 类似,不同之处在于它操作的是可变 payload 的 Struct,而不是 SourceRecord。

Debezium Server - Apache Kafka sink 的 StreamNameMapper

Kafka sink 的行为现在可以通过自定义逻辑来修改,提供特定功能的替代实现。当替代实现不可用时,将使用默认实现。

有关更多详细信息,请参阅 Apache Kafka Injection points

增量快照水印的 INSERT/DELETE 语义

引入了 incremental.snapshot.watermarking.strategy 属性,允许用户选择在增量快照期间使用的水印策略。

insert_insert(旧行为)方法允许 Debezium 为快照期间的每个块在信号数据集合中创建两个条目,一个用于标记快照窗口的开始,另一个用于标记其结束。

另一方面,使用 insert_delete 选项,每个块的开始窗口在信号数据集合中只写入一个条目。完成后,此条目将被删除,并且不会添加相应的条目来表示快照窗口的结束。此方法有助于更有效地管理信号数据集合。

有关更多详细信息,请参阅您感兴趣的连接器的“连接器属性”部分。

Debezium Server - AWS SQS sink

Amazon Simple Queue Service (Amazon SQS) 是一种分布式消息队列服务。它支持通过 Web 服务应用程序以编程方式发送消息,作为通过 Internet 进行通信的一种方式。SQS 旨在提供高度可扩展的托管消息队列,以解决常见的生产者-消费者问题或生产者和消费者之间的连接问题。

Debezium 2.5 提供了将事件发送到 Amazon SQS 的可能性。

Oracle LOB 行为

Debezium 2.5 在快照和流式传输中统一了 LOB 行为。当 lob.enabled 设置为 false 时,将在快照期间显式包含不可用值占位符,以匹配流式传输的行为。

其他修复

此外,此版本还包含相当多的稳定性修复和 bug 修复。其中包括:

  • Oracle 被放弃的事务实现 bug 导致 OoM DBZ-7236

  • 添加 Oracle Truncate Cluster 的 Grammar DBZ-7242

  • 更改列类型时未删除长度值 DBZ-7251

  • MongoDB 表/集合快照通知包含不正确的偏移量 DBZ-7252

  • 多命名空间监控支持中断 DBZ-7254

  • 为 Debezium JDBC 连接器添加追踪日志以跟踪执行时间 DBZ-7217

  • 验证和澄清 Oracle 的多个归档日志目标要求 DBZ-7218

  • 升级 logback 到 1.2.13 DBZ-7232

总共有 16 个问题在此版本中得到修复。非常感谢社区中所有为这个版本做出贡献的贡献者:Bob RoldanChris CranfordGunnar MorlingHarvey YueIlyas AhsanIndra ShuklaJakub CechacekJiabao SunJiri KulhanekJiri PechanecJordan PittierMario Fiore VitaleNils HartmannRoman KudryashovSebastiaan KnijnenburgTudor PlugaruV KZhongqiang Gong

下一步是什么?

距离团队假期休息只有一周多的时间了,我们正在准备 Debezium 2.5 的最终发布。我们计划在假期开始前一周发布。

团队还确定了 2024 年的路线图,这里有一些亮点抢先看(请记住,这只是冰山一角!)。

  • Debezium Engine 中的异步处理

  • 官方 MariaDB 连接器

  • 用户友好的偏移量操作(例如,从事务日志的特定位置开始)

  • MongoDB 的 Sink 连接器

有关更多详细信息,请查看我们的 路线图,了解 Debezium 2.6 及更高版本的相关信息。

一如既往,如果您有任何疑问或反馈,请随时通过邮件列表Zulip 聊天与我们联系。下次再见,保持温暖!

Fiore Mario Vitale

Mario 活跃于开源社区,为多个项目做出了贡献,并深度参与 Debezium (分布式变更数据捕获平台) 的开发。在他的职业生涯中,他积累了在受数据影响的事件驱动架构方面的丰富经验。在他的整个职业生涯中,Mario 主要专注于数据密集型软件和产品开发,这提高了他对开发者体验和数据驱动应用程序的敏感度。除了他的职业追求,Mario 在技术和个人兴趣的交汇处找到了自己的舒适区。他喜欢拍照,尤其擅长捕捉美好的瞬间。他对赛车运动和比赛也充满热情。不写代码的时候,您经常会发现他在户外骑山地自行车探索,以此来满足他对冒险的热情。

   


关于 Debezium

Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。

参与进来

我们希望您觉得 Debezium 有趣且有用,并希望尝试一下。在 Twitter @debezium 上关注我们,在 Zulip 上与我们聊天,或加入我们的 邮件列表 与社区交流。所有代码都在 GitHub 上开源,因此请在本地构建代码,帮助我们改进现有连接器并添加更多连接器。如果您发现问题或有改进 Debezium 的想法,请告诉我们或 记录一个问题

版权所有 © Debezium 及其作者。保留所有权利。有关我们的商标详情,请访问我们的 商标政策商标列表。第三方商标属于其各自所有者,在此提及并不表示任何认可或关联。
×