随着气温逐渐转凉,Debezium 团队又重新投入工作,我们很高兴地宣布 Debezium 0.8.3.Final 的发布!

这是当前 Debezium 稳定版本系列 0.8.x 的一个错误修复版本,同时 Debezium 0.9 的开发也在并行进行。此版本共有14 项修复。与早期的 0.8.x 版本一样,我们进一步改进了 MySQL 连接器使用的新基于 Antlr 的 DDL 解析器(参见 DBZ-901DBZ-903DBZ-910)。

Postgres 连接器在数据库有很多自定义类型的启动时间方面得到了巨大改进(DBZ-899)。报告此问题的用户在 pg_catalog.pg_type 中有近 200K 条记录,由于 Postgres 驱动程序本身存在 N + 1 SELECT 问题,这导致连接器启动需要 24 分钟。通过使用自定义查询获取类型元数据,我们将此时间缩短到 5 秒!现在我们正在与 Postgres 驱动程序的维护者合作,以便在 upstream 也修复此问题。

更灵活的 DELETE 事件传播

除了这些 bug 修复之外,我们还决定将 0.9.x 分支中的一项新功能合并到 0.8.3.Final 发布版中。对于那些使用 SMT 提取变更事件的“after”状态 (DBZ-857) 的用户来说,这可能会很有用。

此 SMT 可用于将更改流式传输到期望简单“扁平”数据行表示而不是 Debezium 复杂事件结构的宿连接器。但是,并非所有宿连接器都支持处理删除。例如,某些连接器在遇到墓碑事件时会失败。因此,SMT 现在可以选择将删除事件重写为特殊“已删除”标记字段的更新。

为此,请将 SMT 的 delete.handling.mode 选项设置为“rewrite”

...
"transforms" : "unwrap",
"transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
"transforms.unwrap.delete.handling.mode" : "rewrite",
...

当传播 DELETE 事件时,传出记录的“__deleted”字段将设置为 true。例如,当使用 JDBC 宿连接器消费事件时,您会在宿表中的相应列中看到这一点。

__deleted | last_name |  id  | first_name |         email
-----------+-----------+------+------------+-----------------------
false     | Thomas    | 1001 | Sally      | sally.thomas@acme.com
false     | Bailey    | 1002 | George     | gbailey@foobar.com
false     | Kretchmar | 1004 | Anne       | annek@noanswer.org
true      | Walker    | 1003 | Edward     | ed@walker.com

然后,您可以使用运行在宿上的批处理作业来删除所有标记为已删除的记录。

下一步是什么?

我们将继续进行 Debezium 0.9 的开发,该版本将主要改进 SQL Server 和 Oracle 连接器。目前计划在两周内进行下一个 0.9 版本(Alpha2 或 Beta1)。

此外,现在是会议季的开始,所以我们将花一些时间准备演示并在多个地点介绍 Debezium。在这些会议上将有关于使用 Debezium 进行变更数据捕获的讲座。

如果您参加了任何这些会议,请过来打个招呼;我们很乐意与您交流您的用例、功能请求、对我们 路线图 的反馈以及任何其他关于 Debezium 的想法。

最后,非常感谢我们的社区成员 Andrey PustovetovMaciej BryńskiPeng Lyu 为此版本的贡献!

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