我很荣幸地宣布 Debezium 2.3 系列的下一个版本,即 2.3.0.Beta1

虽然此版本主要侧重于错误修复和稳定性改进,但 PostgreSQL 连接器以及新的通知和通道子系统带来了一些新改进。此外,还有一些兼容性重大更改。

此版本包含对 22 个问题的更改,所以让我们花点时间深入了解新功能以及任何可能值得注意的错误修复或重大更改!

重大变更

Debezium 最近引入了 JDBC 存储模块,允许您将偏移量和模式历史数据存储在关系型数据库中。JDBC 存储模块默认使用 UTF-16 作为编码;然而,大多数数据库使用 UTF-8。此版本的 Debezium 将 JDBC 存储模块的编码统一为 UTF-8,以便将来使用。

PostgreSQL 副本身份更改

Debezium 2.3 引入了一项新的 PostgreSQL 连接器功能,名为“自动设置副本身份”。

副本身份是 PostgreSQL 标识数据库事务日志中用于插入、更新和删除的列的方式。此新功能允许通过连接器配置来配置表的副本身份,并将设置此配置的责任委托给连接器在启动时完成。

新的配置选项 `replica.identity.autoset.values` 指定了一个由表和副本身份元组组成的逗号分隔列表。如果表已具有给定的副本身份,则该身份将被覆盖,以匹配此配置中指定的。PostgreSQL 支持多种副本身份类型,更多信息可在 文档 中找到。

在指定 `replica.identity.autoset.values` 时,值为逗号分隔的列表,其中每个元素使用 `<fully-qualified-table-name>:<replica-identity>` 的格式。示例如下,其中两个表被配置为具有完整的副本身份

{
  "replica.identity.autoset.values": "public.table1:FULL,public.table2:FULL"
}

请注意,如果连接器使用的用户账户没有设置表副本身份的适当数据库权限,使用此功能将导致失败。如果因权限问题而失败,您必须使用具有正确权限的数据库账户手动设置正确的副本身份。

关联增量快照通知 ID

Debezium 2.3 引入了一个新的通知和通道子系统。该子系统允许您通过多种通道发送信号,这些通道开箱即用,包括文件系统、Kafka 主题和数据库表;然而,该功能是可扩展的。此外,该子系统还包括发送关于初始快照和增量快照状态通知的能力(如果使用了)。这些通知有助于促进 Debezium 与可能需要知道增量或传统快照何时完成、以及是否成功完成的其他第三方系统之间的沟通。

在此版本中,通知和通道子系统得到了改进,能够将信号与通知关联起来。因此,当您发送一个信号并被 Debezium 消费时,任何生成的通知都将包含对该信号的引用,从而允许任何第三方或外部进程精确地知道通知引用的是哪个信号。

这应该有助于弥合依赖新的通知和通道子系统的应用程序或进程之间的分发通信差距。

其他修复

此版本中修复了许多错误并进行了稳定性改进,其中一些值得注意的包括:

  • Debezium Server 停止向 Google Cloud Pub/Sub 发送事件 DBZ-5175

  • 快照步骤 5 - 读取捕获表的结构花费时间过长 DBZ-6439

  • Oracle 并行快照在使用多租户时未正确设置 PDB 上下文 DBZ-6457

  • [MariaDB] 添加对 userstat 插件关键字的支持 DBZ-6459

  • Debezium Server 无法从 Google Pub/Sub 错误中恢复 DBZ-6461

  • Db2 连接器在发送通知时可能因 NPE 而失败 DBZ-6485

  • 当队列内存大小受限时,BigDecimal 失败 DBZ-6490

  • Oracle 表无法捕获,出现 runtime.NoViableAltException DBZ-6492

  • 信号轮询间隔具有不正确的默认值 DBZ-6496

  • Oracle JDBC 驱动程序 23.x 抛出 ORA-18716 - 不在任何时区中 DBZ-6502

  • Alpine postgres 镜像应显式使用 llvm/clang 15 DBZ-6506

  • ExtractNewRecordState SMT 与 HeaderToValue SMT 结合使用会导致意外的字段名异常 DBZ-6486

总共有 22 个问题 在此版本中得到修复。非常感谢社区中为这个版本做出贡献的所有人员:Angshuman Dey, Anisha Mohanty, Chris Cranford, Harvey Yue, Ismail Simsek, Jakub Cechacek, Jiri Pechanec, Jochen Schalanda, Kanthi Subramanian, Mario Fiore Vitale, Martin Medek, and Vojtech Juranek!

下一步是什么?

由于 Debezium 2.3 在一个紧凑的日程下发布,您可以期待在未来 1-2 周内发布下一个 CR1 版本。计划在六月中旬发布 Debezium 2.3.0.Final,然后团队将开始准备 Debezium 2.4。

当我们开始为 Debezium 2.4 做准备时,我们非常希望听到您的反馈或建议。路线图将在下周更新,所以请务必在 邮件列表 或我们的 聊天 上与我们联系,如果您有任何想法或建议。

下次再见……

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