随着气温逐渐转凉,Debezium 团队又重新投入工作,我们很高兴地宣布 Debezium 0.8.3.Final 的发布!
这是当前 Debezium 稳定版本系列 0.8.x 的一个错误修复版本,同时 Debezium 0.9 的开发也在并行进行。此版本共有14 项修复。与早期的 0.8.x 版本一样,我们进一步改进了 MySQL 连接器使用的新基于 Antlr 的 DDL 解析器(参见 DBZ-901、DBZ-903 和 DBZ-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 进行变更数据捕获的讲座。
-
JUG Saxony Day;德国德累斯顿;9 月 28 日
-
Kafka Summit;加州旧金山;10 月 17 日
-
VoxxedDays Microservices;法国巴黎;10 月 29 日-31 日
-
Devoxx Morocco;摩洛哥马拉喀什;11 月 27 日-29 日
如果您参加了任何这些会议,请过来打个招呼;我们很乐意与您交流您的用例、功能请求、对我们 路线图 的反馈以及任何其他关于 Debezium 的想法。
最后,非常感谢我们的社区成员 Andrey Pustovetov、Maciej Bryński 和 Peng Lyu 为此版本的贡献!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。