我很荣幸地宣布 Debezium 0.7.2 发布!

新功能包括对地理空间类型的支持,MySQL 连接器用于恢复丢失的 DB 历史 topic 的新快照模式,以及一个用于将 MongoDB 更改事件转换为更多下游连接器可以消费的结构的消息转换。当然,我们也修复了大量错误。

Debezium 0.7.2 是先前 0.7.x 版本的直接替换版本。从 0.7.0 之前的版本升级时,请查看所有 0.7.x 版本的发行说明,以了解任何可能需要的升级步骤。

非常感谢我们出色的社区成员为此版本付出的辛勤工作:Andrey PustovetovDenis MikhaylovPeter GoranssonRobert CoupSairam PolavarapuTom Bentley

现在让我们仔细看看一些新功能。

MySQL 连接器

MySQL 连接器最大的变化是支持地理空间列类型,如 GEOMETRYPOLYGONMULTIPOINT 等。

新增了两种逻辑字段类型 — io.debezium.data.geometry.Geometryio.debezium.data.geometry.Geography — 用于在变更数据消息中表示地理空间列。这些类型通过 WKB(“well-known binary”)和 SRID(坐标参照系统标识符)表示地理空间数据,使下游消费者可以使用任何支持解析 WKB 的现有库来解释变更事件。稍后将发布一篇详细介绍此内容的博文。

当出于某种原因丢失了 MySQL 连接器使用的 DB 历史主题(部分或全部)时,新的快照模式 schema_only_recovery 会非常有用。如果您想通过重新创建该主题来压缩它,此模式也很有用。请参阅连接器文档了解此模式的详细信息,特别是何时(何时不)可以安全地使用它。

另一个与管理 DB 历史主题大小相关的新功能是选项,用于控制是否包含所有 DDL 事件,还是仅包含根据白名单/黑名单配置捕获的表的相关 DDL 事件。同样,请查看连接器文档以了解此设置的更多具体信息。

最后,我们修复了 MySQL DDL 解析器的一些不足(DBZ-524DBZ-530)。

PostgreSQL 连接器

与 MySQL 连接器类似,现在对 Postgres 中的地理空间列的支持有了很大改进。更具体地说,现在可以在变更数据事件中表示 PostGIS 列类型。非常感谢 Robert Coup 贡献了此功能!

对 Postgres 数组列的支持也得到了扩展,例如,我们现在支持跟踪 VARCHARDATE 数组列的更改。请注意,连接器尚未处理地理空间数组列(如果您有的话),但这应该很快就会添加

如果您只想将捕获表的行中的一部分包含在快照中,您可能会喜欢指定专用 SELECT 语句来做到这一点。例如,这可用于从快照中排除任何逻辑上已删除的记录 — 您可以根据该表中的某个标志来识别这些记录。

社区成员也报告并修复了此连接器中的一些错误,例如,连接器现在可以正确暂停(感谢 Andrey Pustovetov),并且我们修复了一个可能将不正确的偏移量提交到 Kafka Connect 的问题(感谢 Thon Mekathikom)。

MongoDB 连接器

如果您曾比较过 Debezium RDBMS 连接器(MySQL、Postgres)和 MongoDB 连接器发出的变更事件的结构,您会知道后者的消息结构与前者的略有不同。由于 MongoDB 的无模式特性,变更事件实际上包含一个字符串,其中是所应用的插入或补丁的 JSON 表示。此结构无法被现有的 Sink 连接器(如 Confluent 的 JDBC 或 Elasticsearch 连接器)使用。

现在可以通过新添加的单消息转换 (SMT) 来实现这一点,该 SMT 解析这些 JSON 字符串并从中创建结构化的 Kafka Connect 记录(感谢 Sairam Polavarapu!)。当将此 SMT 应用于 JDBC Sink 连接器时,您现在可以从 MongoDB 流式传输数据更改到任何受支持的关系数据库。

请注意,此 SMT 尚在开发中,其发出的消息结构细节可能仍会发生变化。此外,使用 SMT 会有一些固有的局限性,例如,如果您的 MongoDB 文档中包含数组,此 SMT 创建的记录将相应地进行结构化,但许多 Sink 连接器无法处理这种结构。

我们对进一步开发有一些想法,例如,可以提供一个选项来展平(非数组)嵌套结构,这样例如 { "address" { "street" : "..." } } 将表示为 address_street,然后 Sink 连接器可以消费这种结构,因为它们期望的是扁平结构。

新 SMT 的详细描述请参见我们的文档

下一步是什么?

有关 Debezium 0.7.2 中修复的更多详细信息和完整问题列表,请参见完整的更改日志

0.7.3 版本计划于 2 月 14 日发布。

我们将重点处理一些错误修复,并且我们正在努力让 Debezium 定期向专用主题发出心跳消息。这对于诊断目的非常有用,也有助于定期触发 Kafka Connect 中的偏移量提交。这在捕获很少更改的表的某些情况下非常有益。

我们还制定了路线图,其中描述了我们对 Debezium 未来工作的想法,超越了下一个 bugfix 版本。虽然没有一成不变,但这是我们对未来几个月将要添加的功能的设想。如果您在路线图中遗漏了任何重要内容,请在下面的评论中告诉我们,或向我们的 Google 群组发送消息。期待您的反馈!

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