距离我们发布 Debezium 2.4 大约有三周时间了,在这段时间里,团队一直在努力工作,致力于 Debezium 的下一代发展。我很高兴地宣布,今天我们发布了 Debezium 2.5.0.Alpha1,这是 Debezium 2.5 发行系列的第一个预览版本。

此版本包含许多令人兴奋的新功能和错误修复,例如:全新的 IBM Informix 连接器、对 MariaDB 的 MySQL 连接器预览支持、Debezium Server Operator 的改进、对 Kafka 3.6.0 的支持等等。

让我们更详细地了解 Debezium 2.5.0.Alpha1 中包含的这些更改和功能;一如既往,您可以在发行说明中找到此版本的所有更改列表。请特别注意可能影响您升级路径的任何重大更改。

IBM Informix 连接器

得益于Lars Johansson的贡献,Debezium 2.5 为其产品组合增加了一个新连接器,用于收集 IBM Informix 的变更。IBM Informix 是一个可嵌入的高性能数据库,可在一个地方集成 SQL、NoSQL、JSON、时间序列和空间数据。它专为边缘、云或本地环境的分析而设计。

IBM Informix 连接器与其他社区驱动的连接器一样打包,它可在 Maven Central 上获取,或者您可以从我们的Debezium 2.5发布页面下载插件存档。

Maven 坐标如下:

<dependency>
    <groupId>io.debezium</groupId>
    <artifactId>debezium-connector-informix</artifactId>
    <version>2.5.0.Alpha1</version>
</dependency>

如果您想为 Informix 连接器做出贡献,我们在 Debezium 组织下添加了一个新存储库:debezium-connector-informix

我要感谢 Lars Johansson 的贡献和与团队的合作,非常棒!

MariaDB 预览支持

在过去的一段时间里,社区一直利用 MySQL 连接器作为捕获 MariaDB 变更的替代方案;然而,这种兼容性主要是尽力而为。

Debezium 2.5 发行系列旨在通过一种清晰而有条理的方法,逐步检查、验证并最终以与 MySQL 相同的能力支持 MariaDB,从而将 MariaDB 作为一等连接器推向最前沿。我们的目标和希望是能在 MySQL 连接器本身范围内实现这一目标;然而,关于 GTID 支持的调查仍在进行中,这可能会影响未来的发展方向。

Debezium 2.5 的第一个预览版本已经迈出了第一步,我们已经验证了代码可以针对单个 MariaDB 数据库部署正常工作,测试套件通过,并且我们已经解决了 Binlog 客户端支持该部署所需的任何更改。下一步是研究 GTID 支持,MariaDB 支持 GTID,但使用一种与 MySQL 不兼容的方法。

请继续关注未来的版本,我们将继续扩展这方面的工作,并且我们非常欢迎任何早期反馈。

Oracle 流式指标更改

在之前的 Debezium 版本中,有一个单一的 Oracle 流式指标 bean,它暴露了跨所有三个流式适配器的所有指标选项。这常常导致对哪些指标适用于哪个流式适配器感到困惑,因此我们希望在此案例中明确区分。

在 Debezium 2.5 中,Oracle 流式指标 bean 已拆分为三个不同的实现,每个适配器类型对应一个。对于可观测性堆栈,此更改应该是完全透明的,除非您之前在另一种适配器类型上收集了用于一种适配器类型的指标。在这种情况下,您会发现该指标不再可用。

特别是对于 LogMiner 用户,已重命名了几个指标,并且旧指标已被弃用。虽然您在 Debezium 2.5 中仍然可以使用旧的指标名称,但这些指标计划在未来的 2.7+ 版本中移除。已弃用和重命名的指标如下:

旧/已弃用指标 新指标

CurrentRedoLogFileName

CurrentLogFileNames

RedoLogStatus

RedoLogStatuses

SwitchCounter

LogSwitchCounter

FetchingQueryCount

FetchQueryCount

HoursToKeepTransactionInBuffer

MillisecondsToKeepTransactionsInBuffer

TotalProcessingTimeInMilliseconds

TotalBatchProcessingTimeInMilliseconds

RegisteredDmlCount

TotalChangesCount

MillisecondsToSleepBetweenMiningQuery

SleepTimeInMilliseconds

NetworkConnectionProblemsCounter

无替代

Debezium Server Operator

此 Debezium 2.5 预览版本中,Kubernetes 的 Debezium Server Operator 已得到积极改进。几项改进包括:

  • 能够在 CRD 中设置镜像拉取 Secret DBZ-6962

  • 能够在 CRD 中设置资源限制 DBZ-7052

  • 将 OLM bundle 脚本发布到 Maven Central DBZ-6995

  • 在 OperatorHub 发布脚本中支持 OKD/OpenShift Catalog DBZ-7010

  • OLM bundle 中提供显示名称和描述元数据 DBZ-7011

  • 用于收集指标的新指标端点 DBZ-7053

随着我们继续改进 Kubernetes 的 Debezium Server Operator,我们非常希望收到您的反馈。

社区连接器

此外,我们还对 Google Spanner 和 Vitess 的社区驱动连接器进行了一些增强,包括以下更改:

  • Spanner 连接器支持 Cloud Spanner 模拟器 DBZ-6845

  • Vitess 连接器的可恢复快照支持 DBZ-7050

其他修复

此外,此版本还包含相当多的稳定性修复和 bug 修复。其中包括:

  • 添加使用 MySQL 和 GCP PubSub 的 Debezium Server 示例 DBZ-4471

  • 重构 ElapsedTimeStrategy DBZ-6778

  • 多个 debezium:offsets Redis 客户端 DBZ-6952

  • sink 连接器中非 avro 列名的错误大小写行为 DBZ-6958

  • 正确处理 bytea 字段,用于 jdbc sink 到 postgresql DBZ-6967

  • Debezium jdbc sink 处理截断事件失败 DBZ-6970

  • 单引号复制为 N(CHAR/VARCHAR) 列包含转义引号 DBZ-6975

  • 提供配置选项以从 CloudEvent 中排除扩展属性 DBZ-6982

  • Debezium jdbc sink 应抛出不支持 schema 更改主题的异常 DBZ-6990

  • Debezium 使用 JDK 21 编译失败 DBZ-6992

  • GA 版本 OLM bundle 版本无效 DBZ-6994

  • 进一步重构以纠正增量快照主题的下游渲染 DBZ-6997

  • ALTER TABLE 在向 JDBC 接收器目标添加多个列时失败 DBZ-6999

  • CSV 元数据中 zulip chat 的链接无效 DBZ-7000

  • 确保在与 rebalance 或 sync 主题的连接丢失时终止任务 DBZ-7001

  • CSV 元数据中缺少 .metadata.annotations.repository 字段 DBZ-7003

  • 单引号复制和数据丢失 DBZ-7006

  • 移除弃用的嵌入式引擎代码 DBZ-7013

  • 启用复制槽前进检查 DBZ-7015

  • 为 CloudEventsConverter 添加配置选项以从 header 中检索 id 和 type DBZ-7016

  • Oracle 连接器:有效负载大小超过 76020 字节将被截断 DBZ-7018

  • 在 Timezone Converter 测试中使用可选 schema DBZ-7020

  • DDL 语句无法解析 DBZ-7030

  • 阻塞 ad-hoc 快照对于 MySQL 来说并非真正阻塞 DBZ-7035

  • 连接器重启时产生的 fake ROTATE 事件会清除元数据 DBZ-7037

  • 合并资源标签和注解 DBZ-7064

下一步是什么?

随着许多人即将迎来假期,您可以预期 Debezium 2.5 的发布节奏会比平时短。我们一如既往地打算频繁发布,但预计在开始过渡到 Beta 和 RC 版本之前,我们可能只会再发布一个 Alpha 版本。我们的目标是在 12 月中旬前交付 Debezium 2.5.0.Final,正好赶上假期。

虽然这个缩短的时间表给我们留下的空间不多,但我们仍然为 Debezium 2.5 计划了很多内容。MariaDB 预览方面仍有大量工作要做,包括支持 GTID 和多种拓扑部署。我们还在努力改进 Debezium Engine 的并行化体验、JDBC Sink 连接器的批量支持、MongoDB 关于大型 BSON 文档的改进,以及更多内容。您可以在我们的路线图上找到我们对 Debezium 2.5 的持续计划的所有细节。

最后,我想提醒大家注意 Debezium 社区会议。我将在未来几周内分发下一次会议的详细信息,并敦促大家留意并尽量参加我们 12 月初的虚拟活动。这是一个与 Debezium 工程师见面、以 AMA(问我任何问题)形式提问,并深入了解 Debezium 2.5 的所有内容,以及明年初 Debezium 2.6 和 2.7 的发展方向的绝佳机会!

一如既往,如果您有任何疑问或反馈,请随时通过邮件列表Zulip 聊天与我们联系。下次再见,保持温暖!

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