我很兴奋地宣布Debezium的发布开云体育官方注册网址2.0.0.Beta2

这个版本包含了一些突破性的变化,稳定性修复和错误修复,所有这些都让我们更接近2.0.0.Final。总的来说,这个版本一共包含了107年问题这是固定的。

如果您打算升级到2.0.0。Beta2,我们强烈建议您在升级之前阅读发布说明,以了解所有突破性更改。以下是我们将在这篇博文中介绍的值得注意的变化列表,其中一些是突破性的:

新的连接器属性名称空间

Debezium 2.0最大的改动之一是引入了新的连接器属性名称空间。开云体育官方注册网址从Debezium 2.开云体育官方注册网址0 Beta2开始,许多连接器属性都被重新定位为新的名称。这是一个突破性的更改,在升级过程中会影响大部分(如果不是全部的话)连接器部署。

开云体育官方注册网址Debezium以前使用了前缀“database.”和开云体育电动老虎机大量不同的连接器属性。其中一些属性要直接传递给JDBC驱动程序,在其他情况下要传递给数据库历史实现,等等。开云体育电动老虎机不幸的是,我们发现某些属性被传递给底层实现的情况并非有意为之。虽然这不会产生任何类型的回归或问题,但如果存在属性名称冲突,例如,JDBC驱动程序属性与前缀为“database.”的Debezium连接器属性匹配,则可能会在未来引入一个问题。开云体育官方注册网址开云体育电动老虎机

下面描述对连接器属性的更改

  • 所有配置以前前缀为开云体育电动老虎机database.history。现在是要前缀使用吗schema.history.internal。代替。

  • 以前指定的所有JDBC直通选项开云体育电动老虎机数据库。前缀现在应该使用前缀司机。代替。

  • 开云体育电动老虎机database.server.name连接器属性重命名为topic.prefix

  • MongoDBmongodb.name连接器属性对齐以使用topic.prefix代替。

同样,请在部署之前检查连接器配置并进行相应调整。

所有De开云体育官方注册网址bezium事件模式都有名称和版本

开云体育官方注册网址Debezium更改事件是通过模式定义发出的,模式定义包含关于字段的元数据,如类型、是否需要等等。在Debezium以前的迭代中,一些模式定义没有显式开云体育官方注册网址的名称,也没有显式的版本控制。在这个版本中,我们已经开始确保所有模式定义都有一个显式的名称和与其关联的版本。此更改的目标是帮助将来的事件结构兼容性,特别是对于那些正在使用模式注册中心的人。但是,如果您目前正在使用模式注册表,请注意此更改可能会在升级过程中导致模式兼容性问题。

缺省情况下,跳过的操作将截断事件

开云体育官方注册网址方法支持跳过特定的事件类型skipped.operations连接器配置中的Connector属性。如果您只对操作的一个子集感兴趣,比如只对插入和更新感兴趣,而对删除不感兴趣,那么这个特性可能很有用。

一种特定的事件类型截断(t),仅由关系连接器的子集支持,并且是否要跳过这些事件也不一致。在这个版本中,我们对齐了skipped.operations行为,以便如果连接器支持截断事件,默认情况下将跳过这些事件。

请查看以下规则集:

  • 连接器支持截断事件,而不是Oracle连接器

  • 连接器配置没有指定skipped.operations在构型中

如果以上都是正确的,那么连接器的行为将在升级后发生变化。如果希望继续发出截断事件,则skipped.operations =没有需要进行配置。

MySQL binlog压缩支持

在这个版本中,Debezium现在开云体育官方注册网址支持读取已启用压缩写入的binlog条目。在8.0.20版本中,MySQL增加了使用ZSTD算法压缩binlog事件的能力。要启用压缩,必须切换binlog.transaction_compression将MySQL服务器上的变量改为.当启用压缩时,binlog的行为与往常一样,只是binlog条目的内容被压缩以节省空间,并以压缩格式复制到副本,从而显著降低了较大事务的网络开销。

如果您有兴趣阅读更多关于MySQL binlog压缩的内容,可以参考二进制日志事务压缩请参阅MySQL文档中的部分以了解更多细节。

Cassandra 4增量提交日志支持

卡桑德拉4通过添加一个功能,当fsync操作发生时,Cassandra将更新一个基于CDC的索引文件,以包含最新的偏移值,从而改进了与CDC的集成。这个索引文件允许CDC实现读到Cassandra中认为持久的偏移量。

在这个版本中,Debezium现在开云体育官方注册网址使用这个基于CDC的索引文件来消除以前存在的Cassandra处理CDC事件的固有延迟。这将为Cassandra用户提供Debezium在CDC方面的实质性改进,并激励他们考虑Cassandra 4而不是Cassandra 3。开云体育官方注册网址

暂停和恢复增量快照

增量快照已经成为Debezium中不可或缺的特性。开云体育官方注册网址增量快照特性允许用户基于各种原因对一个或多个集合/表重新运行快照。增量快照最初是用开始信号。我们最终添加了能力停止正在进行的增量快照,或者能够从正在进行的增量快照中删除集合/表的子集。

在这个版本中,我们在现有的信号基础上进行了构建,并引入了两个新的信号暂停一个正在进行的增量快照,然后另一个重新开始增量快照(如果之前暂停过)。如果需要暂停增量快照,可以使用apause-snapshot信号必须发送,为了恢复,aresume-snapshot信号可以使用。

这两个新信号可以使用MySQL的信号表策略或Kafka信号主题策略发送。详情请参阅信号支持文档有关信号及其工作原理的详细信息。

增量快照的自定义SQL过滤

虽然不常见,但也可能出现连接器配置错误等情况,需要将特定记录或记录子集重新发送到主题。不幸的是,增量快照传统上是一种全有或全无类型的流程,我们将从集合或表中重新发出所有记录作为快照的一部分。

在这个版本中,一个新的附加条件属性可以在信号有效负载中指定,允许信号指定一个基于sql的谓词来控制增量快照中应该包括哪些记录子集,而不是的默认行为所有行

对象发送增量快照信号的示例如下产品表,但不是将表中的所有行发送到主题附加条件属性可将快照限制为仅发送与产品id =相关的事件12

类型execute-snapshot数据: {数据收集:【inventory.products),类型增量附加条件product_id = 12}}

我们相信这个新的增量快照特性在很多方面都非常有用,当只需要一部分数据时,不必总是重新快照所有行。

信号采集自动添加到包括滤波器

在以前的Debezium版本中,用于增量快开云体育官方注册网址照的信号收集/表必须手动添加到您的table.include.list连接器属性。这个版本的一个大主题是对增量快照的改进,所以我们也利用这个机会简化了这一点。从这个版本开始,Debezium将自动将信号收集/表开云体育官方注册网址添加到表包含过滤器中,避免了用户手动添加它。

此更改不会带来任何兼容性问题。中已经包含信号采集/表的连接器配置table.include.list属性将继续工作,不需要任何更改。但是,如果您希望使您的配置与当前行为保持一致,您也可以安全地将信号收集/表从table.include.list, Debe开云体育官方注册网址zium将开始自动为您处理这个问题。

多任务支持Vitess连接器

Vitess连接器以前允许在两种不同的模式下操作,这完全取决于连接器配置是否指定了任何碎片细节。不幸的是,在这两种情况下,每一种都导致了一个负责执行VStream处理的任务。对于有许多分片的大型Vitess安装,这种架构可能会开始出现延迟问题,因为它可能无法跟上所有分片的所有更改。更复杂的是,在指定碎片细节时,这需要手动在集群中解析碎片,并为每个碎片启动单个Debezium连接器,这既容易出错,更重要的是可能导致部署许多Debezium连接器。开云体育官方注册网址

Vitess社区认识到这一点,并试图从维护和错误的角度寻找解决所有这些问题的解决方案。在De开云体育官方注册网址bezium 2.0 Beta2中,Vitess连接器现在通过发现机制自动解析碎片,这与MongoDB非常相似。然后,这种发现机制将负载分散到多个任务上,允许Debezium的单个部署在每个分片或分片列表上运行一个任务,具体取决于连接器允许的最大任务数。开云体育官方注册网址

在升级期间,Vitess连接器将自动将偏移存储迁移到多任务行为使用的新格式。但是请注意,一旦升级,您将无法降级到较早的版本,因为偏移存储格式将发生更改。

其他修复和改进

在这个版本中有许多错误修复和稳定性变化,一些值得注意的是:

  • 增量快照事件源信息导出错误数据dbz - 4329

  • 弃用内部键/值转换器选项dbz - 4617

  • “No maximum LSN recorded”日志消息可能会在低活动的数据库上发送垃圾邮件开云体育电动老虎机dbz - 4631

  • Redis Sink配置属性没有传递到DB历史记录dbz - 5035

  • 升级SQL Server驱动到10.2.1.jre8dbz - 5290

  • HTTP接收器不重试失败的请求dbz - 5307

  • 当嵌套数组不包含元素时,从mongodb文档到kafka连接模式的转换失败dbz - 5434

  • 在同一个线程Oracle RAC模式下错误地处理了重复的scndbz - 5439

  • 弃用所有连接器的旧主题选择器dbz - 5457

  • 移除JdbcConnection对DatabaseSchema的依赖开云体育电动老虎机dbz - 5470

  • 在启动DefaultRegexTopicNamingStrategy连接器之前缺少regex属性验证dbz - 5471

  • 创建索引DDL在使用带引号的表空间子句时解析失败dbz - 5472

  • 发件箱在确定其模式时不能正确地检查数组一致性dbz - 5475

  • 写入日志的误导性统计数据dbz - 5476

  • 删除SQL Server SourceTimestampModedbz - 5477

  • 开云体育官方注册网址Debezium连接器任务在mongodb的故障转移时没有重试dbz - 5479

  • 更好的信号表故障错误报告dbz - 5484

  • Oracle DATADUMP DDL无法解析dbz - 5488

  • 升级PostgreSQL驱动到42.4.1版本dbz - 5493

  • 当包含关键字“buckets”时,Mysql连接器解析器ddl语句失败dbz - 5499

  • 在RedisDatabaseHistory中重复调用config.validateAndRecord()开云体育电动老虎机dbz - 5506

  • DDL语句无法解析:输入'ENGINE'不匹配dbz - 5508

  • 使用“数据开云体育电动老虎机库。SQL Server文档中的dbnamesdbz - 5516

  • LogMiner DML解析器在引用的列值中错误地解释了连接操作符dbz - 5521

  • Mysql连接器DDL解析器不解析所有的特权dbz - 5522

  • 使用基于json的CHECK约束子句创建表会导致multipleparsingexceptiondbz - 5526

  • 在历史恢复中禁用优先选择DDL的逻辑模式dbz - 5535

  • EmbeddedEngine应该使用SourceConnectorContext初始化Connectordbz - 5534

  • 支持EMPTY列标识符dbz - 5550

  • 使用TCCL作为默认的类加载器来加载接口实现dbz - 5561

  • Max.queue.size.in.bytes无效dbz - 5569

  • 自动主题创建中清单的语言类型dbz - 5573

  • 升级mysql-binlog-connector-java库版本dbz - 5574

  • Vitess:处理VStream异常关闭dbz - 5579

  • 解析alter sql时出错dbz - 5587

  • 字段验证错误会误导积极的、非零的期望dbz - 5588

  • Mysql连接器不能处理区分大小写的rename/change列语句dbz - 5589

  • LIST_VALUE_CLAUSE不允许时间戳文字dbz - 5592

  • Oracle DDL不支持对物化视图的注释dbz - 5595

  • Oracle DDL不支持DEFAULT ON NULLdbz - 5605

  • 数据类型mdsys。不支持Sdo_geometrydbz - 5609

总共,总共107年问题修复了此版本。

接下来是什么?

随着Debezium 2.0 Beta2开云体育官方注册网址的发布,我们已经进入了2.0.0.Final的冲刺阶段。社区应该会在9月底发布CR1和2.0.0。最终版本将于10月中旬发布。

另外,我们的加纳·莫林和我将会是即将到来的Quarkus见解播客,第103集。我们将讨论Debezium和Quarkus,开云体育官方注册网址 Debezium如何利用Quarkus的强大功能,如何在基于Quarkus的应用程序中嵌入Debezium,并讨论Debezium 2.0中的所有新特性。一定要看看播客,告诉我们你的想法!

克里斯克兰福德

克里斯是红帽公司的软件工程师。他以前是Hibernate ORM团队的成员,现在在Debezium工作。开云体育官方注册网址他住在北卡罗来纳州,距离红帽塔只有几个小时的路程。


关于Debe开云体育官方注册网址zium

开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源Apache许可证,版本2.0

参与

我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题