我很高兴地宣布,不仅是Debezium 2.2系列的第一个版本,还有Debezium在2023年的第一个版本,开云体育官方注册网址2.2.0.Alpha

Debe开云体育官方注册网址zium 2.2.0。Alpha1版本包括一些突破性的变化,一些错误修复,以及一些值得注意的改进和特性,包括但不限于:

  • [突破性变化]-ZonedTimestamp数值将不再截断小数秒。

  • [新]-支持从Oracle逻辑备用数据库摄取更改开云体育电动老虎机

  • [新]-使用Debezium Storage API支持Amazon S3桶开云体育官方注册网址

  • [新]-支持在连接器启动过程中重试数据库连接开云体育电动老虎机

  • Debezium开云体育官方注册网址服务器接收器连接器支持Apache RocketMQ和Infinispan

让我们花点时间来更详细地研究一些功能!

断变化

报告了一个边缘病例dbz - 5996如果使用颞列呢ZonedTimestamp如果列的值为0微秒或纳秒,而不是发出值为2023 - 01 - 19 t12:30:00.123000z,该值将以截断的方式发出为2023 - 01 - 19 t12:30:00.123z.当来自该列的输出可能格式化不一致时,这可能导致事件管道中使用的转换器出现其他问题。

为了补救边缘情况,ZonedTimestamp实现现在会将列值的基于分数的秒值填充到源数据库列的长度/比例。开云体育电动老虎机使用上面的一个例子时间戳(6)MySQL列类型,发出的值现在将正确地反映一个值2023 - 01 - 19 t12:30:00.123000z

虽然这种行为上的改变可能对大多数用户的影响很小,但我们希望在您可能使用其他方法在管道中处理这种边缘情况的情况下引起注意。如果有,您应该能够依靠Debezium始终如一地发出值,即使基于分数的秒数是开云体育官方注册网址0

从Oracle逻辑备用中摄取更改

Debe开云体育官方注册网址zium for Oracle连接器通常管理所谓的刷新表,这是一个内部表,用于管理Oracle Log Writer Buffer (LGWR)进程使用的刷新周期。此刷新过程要求连接器使用的用户帐户具有创建和写入该表的权限。逻辑备用数据库通常对数据操作有更严开云体育电动老虎机格的规则,甚至可能是只读的,因此,对数据库进行写入操作是不利的,甚至是不允许的。

为了支持Oracle只读逻辑备用数据库,我们引入了一个标志来禁止创建和管理这个数据库开云体育电动老虎机刷新表.此特性可用于Oracle Standalone和Oracle RAC安装,目前还处于孵化阶段,这意味着将来可能会发生变化。

为了启用Oracle只读逻辑备用支持,添加以下连接器选项:

internal.log.mining.read.only = true

在未来的版本中,我们计划添加对Oracle只读物理备用数据库的支持。开云体育电动老虎机

此配置选项的前缀为内部的。,这意味着它被认为是一个未记录的实验性功能。此选项的语义和行为可能会在未来的版本中更改,这些版本可能无法保证向前或向后兼容。

使用带有存储API的Amazon S3桶

开云体育官方注册网址Debezium提供了一个存储API框架,允许连接器在各种持久性数据存储中存储偏移量和模式历史状态。此外,该框架允许贡献者通过轻松地添加新的存储实现来扩展API。目前,存储API框架支持本地文件系统、Kafka Topic或Redis数据存储。

在Debe开云体育官方注册网址zium 2.2中,我们很高兴地将Amazon S3存储桶添加到该框架中,允许将模式历史持久化到S3存储桶中。使用S3的连接器配置示例如下所示:

...Schema.history.internal =io开云体育官方注册网址.debezium.storage.s3.history schema. internal.s3.access.key.id=aa Schema.history.internal .s3.secret.access.key=bb Schema.history.internal .s3. area .name=aws-global Schema.history.internal .s3.bucket.name=debezium Schema.history.internal .s3.object.name=db-history.log Schema.history.internal .s3.endpoint=http://<服务器>:<端口>
schema.history.internal.s3.access.key.id

指定向S3进行身份验证所需的访问密钥。

schema.history.internal.s3.secret.access.key

指定向S3进行身份验证所需的秘密访问密钥。

schema.history.internal.s3.region.name

S3桶可用的区域。

schema.history.internal.s3.bucket.name

指定要持久化模式历史的S3桶的名称。

schema.history.internal.s3.object.name

指定持久化模式历史记录的桶中的对象名称。

schema.history.internal.s3.endpoint

格式为的指定S3端点http:// < server >: <口>

在启动时重试开云体育电动老虎机数据库连接

在以前的Debezium版本中,连接器启动阶段使开云体育官方注册网址用了快速故障策略。简单地说,这意味着如果我们不能连接、验证或执行连接器所需的任何启动阶段步骤,连接器将进入一个失败的状态。

对于用户来说,一个特定的问题领域是,如果连接器正常启动,运行一段时间,然后最终遇到一些致命错误。如果错误与在连接器启动生命周期内未访问的资源有关,则连接器通常会正常重新启动。但是,如果问题与数据库的可用性有关,并且在连接器启动阶段数据库仍然不可用,则情况就不同了。开云体育电动老虎机在这种情况下,连接器将快速故障,并将进入失败的状态,需要人工干预。

这种快速失效的方法多年来一直为Debezium提供了良好的服开云体育官方注册网址务,但在一个资源可以毫无预警地来来去去的世界里,显然需要做出改变来提高Debezium的可靠性和弹性。虽然Kafka Connect的重试/回退框架在这方面有所帮助,但这并没有解决启动资源不可用的问题。

开云体育官方注册网址Debezium 2.2改变了这一现状,稍微改变了我们与Kafka Connect的源连接器API的集成方式。我们没有在启动生命周期期间访问潜在的不可用资源,而是将这种访问移到了连接器生命周期的后面阶段。实际上,Debezium启动代开云体育官方注册网址码是惰性执行的,访问潜在的不可用资源,这允许我们在启动代码期间利用Kafka Connect重试/回退框架。简而言之,如果在连接器启动期间数据开云体育电动老虎机库仍然不可用,如果Kafka Connect重试被启用,连接器将继续重试/回退。只有当达到重试尝试的最大次数或发生不可恢复的错误时,连接器任务才会进入失败的状态。

我们希望这会为Debezium体验带来更多的可靠性和弹性,改进在不断变化的环境中处理错误的方式,并为管理连接器生命周期提开云体育官方注册网址供坚实的基础。

在Debezium服务器中支持RocketMQ和Infinispan开云体育官方注册网址

开云体育官方注册网址Debezium Server是一个基于夸克的框架,允许从命令行执行Debezium连接器,不需要Kafka或Kafka Connect,允许将Debezium更改事件交付到任何目标框架。在Debe开云体育官方注册网址zium 2.2中,Debezium Server中添加了两个新的接收器连接器,以支持向Apache RocketMQ和Infinispan发送更改事件。

RocketMQ

Apache RocketMQ是一个原生云消息、事件和流实时数据处理平台,涵盖云边缘设备协作场景。为了集成Debezium服务器与Rocket开云体育官方注册网址MQ, Debezium服务器application.properties必须修改以包含以下条目:

application.properties
开云体育官方注册网址debezium.sink。Type =rocketmq开云体育官方注册网址 debezum .sink.rocketmq.producer.name.srv.addr=: debezum .sink.rocketmq.producer。组= debezuim-group deb开云体育官方注册网址ezium.sink.rocketmq.producer.max.message。= 4194304 deb开云体育官方注册网址ezium.sink.rocketmq.producer.send.msg大小。超时= 3000 debe开云体育官方注册网址zium.sink.rocketmq.producer.acl。= false debezi开云体育官方注册网址um.sink.rocketmq.producer.access启用。关键= <访问密钥> debezi开云体育官方注册网址um.sink.rocketmq.producer.secret.key = <秘钥>

上面的配置指定要使用的接收器类型为rocketmq,允许使用RocketMQ模块。下面是上面所示的每个属性的描述:

开云体育官方注册网址debezium.sink.rocketmq.producer.name.srv.addr

Apache RocketMQ可用的主机和端口。

开云体育官方注册网址debezium.sink.rocketmq.producer.group

指定与Apache RocketMQ生产者组关联的名称。

开云体育官方注册网址debezium.sink.rocketmq.producer.max.message.size

(可选)消息的最大字节数。默认为4193404(4 mb)。

开云体育官方注册网址debezium.sink.rocketmq.producer.send.msg.timeout

(可选)发送消息时的超时时间,单位为毫秒。默认为3000(3秒)。

开云体育官方注册网址debezium.sink.rocketmq.producer.acl.enabled

(可选)控制是否启用访问控制列表。默认为

开云体育官方注册网址debezium.sink.rocketmq.producer.access.key

(可选)对接Apache RocketMQ集群时使用的接入键。

开云体育官方注册网址debezium.sink.rocketmq.producer.secret.key

(可选)对接Apache RocketMQ集群时使用的访问秘密。

有关与RocketMQ一起使用Debezium Server开云体育官方注册网址的更多信息,请参阅文档

Infinispan

Infinispan是一种内存中的分布式数据存储,提供灵活的部署选项,具有存储、管理和处理数据的强大功能。Infinispan基于键值存储的概念,它允许存储任何数据类型。为了集成Debezium服务器与Infini开云体育官方注册网址span, Debezium服务器application.properties必须修改以包含以下条目:

application.properties
开云体育官方注册网址debezium.sink。类型= infinispan d开云体育官方注册网址ebezium.sink.infinispan.server。主机= <主机名> debezi开云体育官方注册网址um.sink.infinispan.server。端口= <端口> deb开云体育官方注册网址ezium.sink.infinispan。缓存= <缓存名称> debezium开云体育官方注册网址.sink.infinispan。用户用户= < > de开云体育官方注册网址bezium.sink.infinispan.password = <密码>

上面的配置指定要使用的接收器类型为infinispan,可以使用Infinispan模块。下面是上面所示的每个属性的描述:

开云体育官方注册网址debezium.sink.infinispan.server.host

指定Infinispan集群中某个服务器的主机名。此配置选项还可以提供以逗号分隔的主机名列表,例如hostname1, hostname2

开云体育官方注册网址debezium.sink.infinispan.server.port

Infinispan集群的端口。默认为11222

开云体育官方注册网址debezium.sink.infinispan.cache

指定用于写入更改事件的Infinispan缓存的名称。

Infinispan接收器要求提前手动创建缓存。这使您能够使用满足需求所需的任何可变配置来创建缓存。

开云体育官方注册网址debezium.sink.infinispan.user

一个可选配置,如果需要进行身份验证,则指定使用该用户进行身份验证。

开云体育官方注册网址debezium.sink.infinispan.password

如果需要身份验证,则可选配置用于为身份验证用户指定密码。

有关在Infinispan中使用Debezium Serve开云体育官方注册网址r的更多信息,请参见文档

其他修复

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

  • 从MySQL连接器中删除指定驱动程序类的选项dbz - 4663

  • 开云体育官方注册网址Debezium不能与Apicurio和自定义信任库一起工作dbz - 5282

  • 显示/隐藏密码在连接器查看详细信息屏幕上不起作用dbz - 5322

  • Oracle无法撤消更改dbz - 5907

  • Postgresql数据丢失重启dbz - 5915

  • 添加支持连接头到Debezium服务器开云体育官方注册网址dbz - 5926

  • Oracle多线程丢失数据dbz - 5945

  • 扳手连接器缺少JSR-310依赖性dbz - 5959

  • 截断与ExtractNewRecordState不兼容的记录dbz - 5966

  • 计算分区不能为负dbz - 5967

  • 快照.select.statement.overrides表大小日志消息不正确dbz - 5985

  • NPE在执行快照信号与排除。表配置错误的表名dbz - 5988

  • postgresql连接器解析money类型的边界值时存在问题dbz - 5991

  • MySqlDatabaseSchema中不可解析DDL语句的日志语句包含占位符开云体育电动老虎机dbz - 5993

  • Postgresql连接器将money类型的null解析为0dbz - 6001

  • Postgres LSN检查应该遵循event.processing.failure.handling.modedbz - 6012

接下来是什么?

由于Debezium 2.2的开云体育官方注册网址道路刚刚开始,这个初始版本涵盖了我们最近2023年概述的许多功能路线图更新。然而,仍有一些功能仍在积极开发中,包括:

  • 可配置的信号通道,使用户不仅可以从数据库表或Kafka主题发送信号,还可以从其他方式发送信号,如HTTP端点,文件系统等。开云体育电动老虎机

  • 支持原生开云体育官方注册网址Debezium即时更改事件的Debezium JDBC接收器连接器,无需使用事件扁平化转换。

  • 一个新的单一消息转换,ExtractChangedRecordState,它支持向发出的事件添加报头,该事件描述了源事件更改或未更改的字段。

  • 对Debezium的用户界面进行了大量增强开云体育官方注册网址

随着我们继续开发Debezium 2.2和修复Debeziu开云体育官方注册网址m 2.1的bug,我们很乐意听到您的反馈或建议,无论是关于我们的路线图,这个版本的变化,还是您想看到的我们没有提到的东西。请务必与我们联系邮件列表或者我们的闲谈,聊天如果有的话。或者如果你只是想路过给我们打个招呼,我们也会很欢迎的。

下次见…

克里斯克兰福德

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


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

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

参与

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

Baidu
map