随着北半球的夏天接近尾声,我们正翘首以盼秋天的色彩。在此期间,团队一直在忙于准备 Debezium 2.4 的下一个主要版本。今天,我很高兴地宣布,我们即将发布 Debezium 2.4.0.CR1

此版本主要侧重于稳定性;然而,我们也有一些新功能作为最后的补充,值得强调。那么,让我们深入了解一下吧?!

重大变更

社区主导的 Vitess 连接器默认只重试一部分错误。这一行为已被改变,现在只有明确定义的错误才不会被重试。更多详情,请参阅 DBZ-6944

新功能

MongoDB 并行增量快照

自 Debezium 1.x 引入增量快照以来,在捕获数据库事务中的更改的同时,对现有数据进行增量快照的过程一直是一个单线程活动。在添加新功能时,专注于基础并在此基础上构建是很常见的,这正是 MongoDB 所经历的。

在 Debezium 2.4 中,我们通过并行读取多个块来迈出添加 MongoDB 连接器增量快照并行支持的第一步。这应该会提高吞吐量,但代价是内存消耗增加,因为这些块正在被收集、排序,并且会与事务日志捕获数据集合进行去重。感谢 Yue WangDBZ-6518 中发起的这项工作,这绝对是我们将在未来的 Debezium 版本中为关系型连接器探索的内容。

PostgreSQL 16 支持

一周多前,PostgreSQL 公布了 PostgreSQL 16 的即时发布,我们很高兴地宣布 Debezium 2.4 将支持该版本。

PostgreSQL 16 引入了从备用服务器进行逻辑复制的功能;然而,Debezium 尚未测试此功能,它将在 Debezium 的稍后版本中引入。目前,逻辑复制仍然只能通过主服务器支持。

Google Spanner GKE 工作负载身份支持

Google Kubernetes Engine (GKE) 支持工作负载身份,这使您可以使用比传统的基于 JSON 的密钥更安全的身份验证机制。在 Debezium 2.4 中,当未显式设置 JSON 密钥时,Spanner 连接器将自动默认使用 GKE 工作负载身份进行身份验证。感谢 laughingman7743 作为 DBZ-6885 的一部分所做的贡献。

其他修复

  • Ad-hoc 阻塞快照触发器会发出所有表的模式更改 DBZ-6828

  • 当 V$TRANSACTION 中事务存在的 start_scn 为 0 时,Oracle 连接器首次启动时,日志挖掘将从最早的 scn 开始 DBZ-6869

  • 确保连接器能够稳健地处理重新平衡事件 DBZ-6870

  • OpenLogReplicator 确认在重启时可能重新发送或省略事件 DBZ-6895

  • ExtractNewRecordState 的模式缓存未随 DDL 更改事件的到达而更新 DBZ-6901

  • 当 application.properties 中未指定 RDI 端口时,Debezium 错误消息具有误导性 DBZ-6902

  • 生成到 target/generated-sources 的 protobuf 文件会破坏构建 DBZ-6903

  • Redis Debezium Sink 的日志输出清理 DBZ-6908

  • JSON 对象列表中的值被省略 DBZ-6910

  • 修复了日志命名 DBZ-6935

  • 当 snapshot.mode 设置为 never 且配置了信号数据收集时,MySql 连接器会得到 NPE DBZ-6937

  • Oracle RAC 线程的健全性检查/重试 redo 日志不起作用 DBZ-6938

  • Drop 事件的表更改信息不正确 DBZ-6945

  • 从信号和通知 MBean 的 ObjectName 中删除空格 DBZ-6957

altogether, 20 个问题已在此版本中修复。非常感谢所有为本次发布做出贡献的社区成员:Andy PicklerAnisha MohantyBreno MoreiraChris CranfordHarvey YueIndra ShuklaJakub CechacekJiri PechanecMario Fiore VitaleNancy XuNir LevyOndrej BabecRené KernerSergey EiznerThomas ThorntonWu Zhenhua、Zheng Wang、laughingman7743tison

展望与未来计划?

我们现在正处于规划 Debezium 2.5 愿景及其未来发展方向的节点。我们最近举行了第一次社区会议,并讨论了我们的一些 2.5 路线图想法,其中一些包括:

  • 为关系型连接器提供并行增量快照。

  • 改进 MongoDB 对超出 16MB 的 BSONDocument 的支持。

  • Db2 在 z/OS 和 iSeries 平台上的支持。

  • JDBC Sink 连接器中的批处理支持。

  • Debezium Engine 内部任务和其他组件的并行化。

  • MariaDB 和 Oracle 23 的支持预览

更多详情,请查看我们的 路线图,了解 Debezium 2.5 及更高版本的相关信息。

此外,Debezium 将于下周参加 Current 2023。如果您将参加,请务必在周三下午 2:30 的“专家问答”环节停下来,参加关于 Debezium 和 Kafka 的讨论。此外,请务必在周三下午 4:30 的赞助商环节了解使用 Debezium、Strimzi、Apicurio 和 Kubernetes 等开源项目从边缘到云部署数据管道是多么容易。

一如既往,如果您有任何问题、建议或反馈,请通过我们的 邮件列表聊天 与我们联系。我们总是很高兴听到您的分享。下次再见,保持安全。

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