我很荣幸地宣布 Debezium 1.5 系列的第一个版本,1.5.0.Alpha1

此版本为 Debezium Oracle 连接器的基于 LogMiner 的捕获实现带来了许多改进,对 MySQL 连接器进行了大量重构,以及一系列广泛的错误修复和其他小的功能添加。

改进的基于 LogMiner 的捕获实现

自从我们在 Debezium 1.3 中宣布为 Debezium Oracle 连接器实现基于 LogMiner 的捕获以来,我们一直看到我们活跃社区中的人们对这个连接器表现出持续增长的兴趣,他们对其进行测试、提供反馈、报告 bug 和功能请求,提交包含修复的拉取请求等等。基于所有这些输入,该连接器正在迅速成熟,我们的目标是在 Debezium 1.5 或最晚 1.6 中将基于 LogMiner 的实现从“孵化”状态移至“稳定”状态。Debezium 1.5 的第一个 Alpha 版本包含了许多相关的改进:

  • java.sql.SQLException: ORA-01333: 无法建立 Logminer 字典 (DBZ-2939)

  • 当 mining 会话无法启动时捕获并报告 LogMiner 状态 (DBZ-3055)

  • Debezium Oracle 连接器在 SCN 大幅度跳转时可能会卡住 (DBZ-2982)

  • 改进 Logminer 适配器的日志记录 (DBZ-2999)

非常感谢 Martín Pérez、Milo van der Zee、Anton Kondratev 以及其他所有人在此期间的密集测试、反馈和贡献!该领域的下一步工作将包括一些与性能相关的改进;敬请关注详细信息。

重构的 MySQL 连接器

为了减少所有不同 Debezium 连接器的维护工作,我们很早就开始了构建通用连接器框架的工作。该框架允许我们只需实现一次许多功能(和 bug 修复),所有基于此框架的连接器都能从中受益。目前,几乎所有的 Debezium 连接器都已移植到这个框架,但 Cassandra 和 MySQL 连接器除外。

从这个版本开始,MySQL 连接器也提供了基于此框架的实现。由于 MySQL 连接器是 Debezium 连接器中的第一个,并且它具有相当多的特定特性和功能,因此我们决定不简单地用新实现替换现有实现,而是暂时将现有和新的实现并存。

这允许新实现成熟,同时也让用户可以选择使用哪个实现。虽然新连接器实现是此版本的默认实现,但您可以通过将 internal.implementation 选项设置为 legacy 来回退到早期实现。我们目前没有立即移除现有实现的计划,但未来的功能开发和 bug 修复将重心转移到新实现上。请尝试使用新的连接器实现,并在遇到任何问题时告知我们。

虽然新实现的功能与早期实现基本相当,但有一个例外:之前实验性的更改连接器实例过滤器配置的功能不包含在新实现中。我们计划在不久的将来为所有基于框架的连接器推出类似的功能。现在 MySQL 连接器也有了基于框架的实现,我们计划为所有(关系型)连接器提供一系列快照改进:例如上述更改过滤器配置的能力、并行化快照操作的方法,等等。

其他功能

除了这些主要功能外,此版本还带来了一系列其他改进、小型新功能和 bug 修复,包括以下内容:

  • Cassandra 连接器中用户类型列表的正确处理 (DBZ-2974)

  • MySQL 和 MariaDB 的多个 DDL 解析器修复 (DBZ-3018, DBZ-3020, DBZ-3023, DBZ-3039)

  • 大型 Postgres 模式(包含许多表)的快照性能改进 (DBZ-2575)

  • Postgres 连接器能够发出 TRUNCATE 事件 (DBZ-2382);请注意,启用后,这将为该连接器的变更事件添加一个新的 op 类型 t,请确保您的消费者能够妥善处理此类事件。

  • 感谢 Kewei Shang 的工作,现在有关于遵循 Debezium 教程示例 使用 Vitess 的孵化连接器 的说明 (DBZ-2678),该连接器已在 Debezium 1.4 中添加。

    Vitess Tutorial Example Overview

总共有 32 个问题在此版本中得到修复。非常感谢所有贡献的社区成员:Bingqin ZhouDave Cramer Kewei ShangMartín PérezMartin SillenceNick MurrayNaveen Kumar

对于即将到来的 1.5 预览版本,我们计划重点关注进一步改进和稳定 Oracle 的基于 LogMiner 的连接器实现,完成 MySQL 连接器迁移的一些收尾工作,并开始探索上述的快照改进。

我们还决定继续努力创建 图形化的 Debezium 用户界面;该组件目前正处于积极开发阶段,支持更多连接器,提供(重新)启动和停止连接器的功能,检查日志等等。如果一切顺利,该 UI 将正式成为下一个 Debezium 1.5 预览版本的一部分!

Gunnar Morling

Gunnar 是一位软件工程师,内心是一个开源爱好者,目前在 Confluent 担任技术专家。此前,他曾帮助构建一个基于 Apache Flink 的实时流处理平台,并领导了 Debezium 项目,这是一个用于变更数据捕获的分布式平台。他是 Java Champion,并创立了多个开源项目,如 JfrUnit、kcctl 和 MapStruct。Gunnar 是一位热情的博主 (morling.dev),并曾在 QCon、Java One 和 Devoxx 等各种会议上发表演讲。他居住在德国汉堡。

   


关于 Debezium

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

参与进来

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

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