尽管我们仍在按计划进行即将发布的 Debezium 2.6 版本,但我们一直在不断改进和修复,以确保旧版本能够继续提供最佳体验。因此,团队很高兴地宣布 Debezium 2.5 的第一个维护版本,即 Debezium 2.5.1.Final。让我们深入了解一下这个版本包含的内容以及升级时您应该注意的事项……​

重大变更

团队致力于避免次要版本之间出现任何潜在的破坏性更改;但是,此类更改有时是不可避免的。

重新选择列的后置处理器 (Re-select Columns Post Processor)
  • 重新选择列的后置处理器在构建查询时使用了 `message.key.columns` 作为键。对于大多数具有主键的表来说,这是不正确的。默认行为已更改,默认使用表的主键。引入了一个新的配置选项,允许用户选择是使用主键还是生成的键,即 `reselect.use.event.key` (DBZ-7358)。

改进和更改

MongoDB post-image 更改

MongoDB 连接器的事件负载可以配置为包含更新中已更改的完整文档。连接器之前对如何作为更改流的一部分获取完整文档做出了有倾向性的选择;然而,在所有用例中,这种行为与我们的预期不符。

Debezium 2.5+ 引入了一个新的配置选项 `capture.mode.full.update.type`,允许连接器显式控制如何处理变更流的完整文档查找 (DBZ-7299)。此选项的默认值为 `lookup`,这意味着数据库将进行单独的查找来获取完整文档。如果您正在使用 MongoDB 6+,您也可以选择使用 `post_image` 来利用 MongoDB 变更流的 post-image 支持。

其他更改

总而言之,此版本 修复了 21 个问题

  • 在 debezium server 2.0.1.Final 中处理批量更新(50k)记录时连接器停止 DBZ-6955

  • DELETE 事件后发送空对象到 GCP Pub/Sub DBZ-7098

  • Debezium-ddl-parser 在解析 MySQL DDL 语句(包含 UNION 的子查询)时崩溃 DBZ-7259

  • Oracle DDL 解析中 PARTITION REFERENCE 错误 DBZ-7266

  • PostgreSQL ad-hoc blocking snapshots 在 snapshot mode 为 "never" 时失败 DBZ-7311

  • ad-hoc blocking snapshot 在连接器创建后立即因 "invalid snapshot identifier" 而失败 DBZ-7312

  • 指定包含空格的表包含列表会导致 LogMiner 查询不匹配 DBZ-7315

  • Debezium heartbeat.action.query 在写入 WAL 之前未启动:第二部分 DBZ-7316

  • Oracle 连接器偶尔无法找到 SCN DBZ-7345

  • 初始快照通知应使用完整标识符。 DBZ-7347

  • Debezium 在表拆分操作后失败 DBZ-7360

  • MSSQL 为 varchar, nvarchar, char 列在 db schema 中具有错误的默认值 DBZ-7374

  • 将 kubernetes.yml 中的附加角色绑定定义替换为 @RBACRule DBZ-7381

  • Kinesis Sink PutRecord 时异常 DBZ-7417

  • ParsingException (仅 MariaDB):alterSpec drop foreign key 带有 'tablename.' 前缀 DBZ-7420

非常感谢社区中为本次发布做出贡献的所有贡献者:Anisha Mohanty, Breno Moreira, Chris Cranford, Ilyas Ahsan, Jakub Cechacek, James Johnston, Jiri Pechanec, Mario Fiore Vitale, Mickael Maison, Peter Hamer, Robert Roldan, V K,以及 leoloel

展望与下一步?

在接下来的几个月里,团队仍将致力于 Debezium 2.6 的开发。然而,在此期间,您可以期望我们将继续审查回归问题和 bug 修复,并为 Debezium 2.5 提供维护版本。

同时,如果您对 Debezium 2.6 及之后在 2024 年的计划感兴趣,我们鼓励您查阅我们的 路线图,其中详细介绍了我们通往今年晚些时候的 Debezium 3.0 之路。如果您有任何建议或想法,请随时通过我们的 邮件列表 或我们的 Zulip 聊天 与我们联系。

本周晚些时候,我们将在布鲁塞尔的 Fosdem 2024 上有两个即将进行的演讲。Ondrej Babec 将发表关于 性能测试及其重要性 的演讲,而 Vojtech Juranek 将 使用 Debezium 实时为 AI 模型提供数据。如果您计划参加,请务必关注这些演讲,并与我们的 Debezium 工程师见面交流。

下次再会……​

Chris Cranford

Chris 是 IBM 的一名软件工程师,之前在 Red Hat 工作,他致力于 Debezium 项目,并每天都在深入研究 Oracle 和 Change Data Capture 的各个方面。他此前曾从事 Hibernate(领先的开源 JPA 持久化框架)方面的工作,并且继续为 Quarkus 做贡献。Chris 居住在美国北卡罗来纳州。

   


关于 Debezium

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

参与进来

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

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