原文地址: https://debezium.io/blog/2023/01/19/debezium-2-2-alpha1-released/
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
Debezium 2.2.0.Alpha1 Released
January 19, 2023 by Chris Cranford
releases mongodb mysql postgres sqlserver cassandra oracle db2 vitess outbox
我很高兴地宣布,不仅德贝兹2.2系列的首次发布,而且德贝兹在2023年的首次发布, 2.2.0.Alpha !
Debezr2.2.0.阿尔法1版本包括一些破坏性的更改、一些错误修复以及一些值得注意的改进和特性,包括但不限于:
[打破零钱]-ZonedTimestamp 值将不再截断分数秒。
[新]-支持从甲骨文逻辑备用数据库中吸收更改
[新]-支持使用德贝齐安存储API的亚马逊S3桶
[新]-在连接器启动期间支持重试数据库连接
[新]-阿帕奇火箭和英菲尼斯潘服务器接收器连接器支持
让我们花点时间,更详细地讨论一些功能!
突破性变化
一宗边缘个案在 DBZ-5996 如果一个时空柱ZonedTimestamp 如果专栏的价值0 微秒或纳米秒,而不是2023-01-19T12:30:00.123000Z ,该值会以截断的方式发出。2023-01-19T12:30:00.123Z .这可能会导致在事件管道中使用转换器的其他问题,因为该列的输出可能无法一致地格式化。
为了补救边缘情况ZonedTimestamp 现在,实现将把列值的分步秒值填充到源数据库列的长度/规模上。使用上面的例子TIMESTAMP(6) Mysql列类型,排放值现在将恰当地反映2023-01-19T12:30:00.123000Z .
虽然这种行为上的改变对大多数用户的影响可能很小,但我们希望在可能使用其他方式处理管道中的这个边缘情况的情况下,引起人们的注意。如果你有,你应该能够依靠Debez铵一致地发出值,即使是基于分秒的秒是0 .
由甲骨文逻辑标准引发的更改
甲骨文连接器的德贝兹通常管理所谓的 花坛 这是一个内部表,用于管理甲骨文日志编写者缓冲区(LGWR)过程使用的同流循环。此冲洗过程要求连接器使用的用户帐户拥有创建和写入此表的权限。逻辑备用数据库通常对数据操作有更多的限制性规则,甚至可能是只读的,因此,向数据库写入是不可取的,甚至是不允许的。
为了支持甲骨文只读逻辑备用数据库,我们引入了一个标记来禁用此标记的创建和管理 花坛 .这一功能可以同时使用甲骨文独立和甲骨文RAC装置,目前被认为是孵化,意味着其未来的变化。
为了使甲骨文能够只读逻辑备用支持,添加以下连接器选项:
internal.log.mining.read.only=true
在未来的版本中,我们计划添加对甲骨文只读物理备用数据库的支持。
此配置选项以internal. 这意味着它被认为是一个无证的实验性特征。这个选项的语义和行为在未来的版本中可能会发生变化,可能无法保证向前或向后兼容。
使用带有存储API的亚马逊S3桶
Debezum提供了一个存储API框架,使连接器能够在各种持久性数据存储中存储偏移和架构历史状态。此外,框架使贡献者能够通过添加新的存储实现轻松地扩展API。目前,存储API框架支持本地文件系统、卡夫卡主题或雷迪斯数据存储。
使用Debezum2.2,我们很高兴地添加了亚马逊S3桶作为框架的一部分,允许架构历史持续到S3桶。使用S3的连接器配置示例可能如下:
…
schema.history.internal=io.debezium.storage.s3.history
schema.history.internal.s3.access.key.id=aa
schema.history.internal.s3.secret.access.key=bb
schema.history.internal.s3.region.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://:; .
启动时重试数据库连接
在前几版的Debezns中,连接器的启动阶段使用了一个故障加速策略。简单地说,这意味着如果我们无法连接、验证或执行连接器所需的任何启动阶段步骤,连接器将输入FAILED 国家。
对于用户来说,一个具体的问题是连接器是否能够优雅地启动,运行一段时间,然后最终会遇到一些致命的错误。如果错误与在连接器启动生命周期期间未访问的资源有关,则连接器通常会很好地重新启动。但是,如果问题与数据库的可用性有关,而且在连接器的启动阶段数据库仍然不可用,则情况就不同了。在这种情况下,连接器将故障快速,并输入FAILED 国家,需要手动干预。
快速失败的方法在过去的几年里很好地发挥了德贝佐姆的作用,但是在一个资源可以自由进出的世界里,显然需要改变来提高德贝佐姆的可靠性和弹性。虽然卡夫卡连接的重试/回退框架在这方面有所帮助,但这并没有解决启动资源因当前编写代码的方式而不可用的担忧。
Debezr2.2改变了这一状况,略微改变了我们如何集成卡夫卡连接的源连接器API的方式。在启动生命周期期间,我们没有访问潜在的不可用资源,而是将访问转移到连接器生命周期的稍后阶段。实际上,Debezum启动代码在访问可能不可用的资源时是懒惰的,这使我们可以利用卡夫卡连接重试/退出框架,即使在启动代码期间也是如此。简而言之,如果数据库在连接器启动期间仍然不可用,则如果启用了卡夫卡连接重试,连接器将继续重试/退试。只有在达到重试的最大次数或发生不可检索错误时,连接器任务才会输入FAILED 国家。
我们希望这能为Debezum体验带来更多的可靠性和弹性,改进在不断变化的环境中如何处理错误,并为管理连接器生命周期提供坚实的基础。
德贝兹服务器上的火箭和英菲尼斯潘支持
德贝兹服务器是基于夸克的框架,允许从命令行执行德贝兹连接器,不需要卡夫卡或卡夫卡连接,允许将德贝兹更改事件传递到任何目标框架。在Debezr2.2上,在Debezr服务器上增加了两个新的接收器连接器,以支持向阿帕奇火箭和英菲尼斯潘发送更改事件。
罗凯提
阿帕奇火箭队 是一个云源性的消息传递,分叉,流实时数据处理平台,涵盖云边缘设备协作场景。为了将德贝兹服务器与德贝兹服务器—罗凯提(罗凯提)集成application.properties 必须修改,以包括下列条目:
application.properties
debezium.sink.type=rocketmq
debezium.sink.rocketmq.producer.name.srv.addr=:
debezium.sink.rocketmq.producer.group=debezuim-group
debezium.sink.rocketmq.producer.max.message.size=4194304
debezium.sink.rocketmq.producer.send.msg.timeout=3000
debezium.sink.rocketmq.producer.acl.enabled=false
debezium.sink.rocketmq.producer.access.key=
debezium.sink.rocketmq.producer.secret.key=
上面的配置指定要使用的接收器类型是rocketmq ,使火箭能够使用该模块。以下是对上述每个属性的描述:
debezium.sink.rocketmq.producer.name.srv.addr
指定可使用阿帕奇火箭的主机和端口。
debezium.sink.rocketmq.producer.group
指定与阿帕奇火箭生产者组相关的名称。
debezium.sink.rocketmq.producer.max.message.size
(可选)指定消息的最大字节数。默认4193404 (4MB).
debezium.sink.rocketmq.producer.send.msg.timeout
(可选)指定发送消息时以毫秒为单位的超时。默认3000 (3 seconds).
debezium.sink.rocketmq.producer.acl.enabled
(可选)控制是否启用了访问控制列表。默认false .
debezium.sink.rocketmq.producer.access.key
(可选)用于连接阿帕奇火箭群的访问键。
debezium.sink.rocketmq.producer.secret.key
(可选)用于连接阿帕奇火箭群的访问秘密。
欲知更多关于使用罗凯提服务器的信息,请参阅 文件 .
无穷的
无穷的 是一个内存中的分布式数据存储器,提供灵活的部署选项,具有存储、管理和处理数据的健壮能力。无限是基于一个允许存储任何数据类型的键值存储的概念。为了将德贝兹服务器与英菲尼斯潘服务器集成application.properties 必须修改,以包括下列条目:
application.properties
debezium.sink.type=infinispan
debezium.sink.infinispan.server.host=
debezium.sink.infinispan.server.port=
debezium.sink.infinispan.cache=
debezium.sink.infinispan.user=
debezium.sink.infinispan.password=
上面的配置指定要使用的接收器类型是infinispan ,可使用无限模块。以下是对上述每个属性的描述:
debezium.sink.infinispan.server.host
指定英菲尼斯潘集群中一个服务器的主机名。此配置选项还可以提供一个逗号分隔的主机名列表,例如:hostname1,hostname2 .
debezium.sink.infinispan.server.port
指定无限集群的端口。默认11222 .
debezium.sink.infinispan.cache
指定写入更改事件的无限缓存的名称。
英菲尼斯潘接收器要求提前手动创建缓存。这使您能够使用任何适合您需求的变量配置创建缓存。
debezium.sink.infinispan.user
如果需要身份验证的话,可以指定用户进行身份验证的可选配置。
debezium.sink.infinispan.password
如果需要身份验证,则可选择设置指定身份验证用户的密码。
有关使用英菲尼斯潘德贝兹服务器的更多信息,请参阅 文件 .
其他补救措施
在这个版本中出现了相当多的缺陷和稳定性变化,值得注意的是:
从mysql连接器中删除指定驱动程序类的选项 DBZ-4663
德贝佐姆不与阿皮库里奥和定制信托店合作 DBZ-5282
显示/隐藏密码不适用于连接器查看屏幕细节 DBZ-5322
先知不能撤销更改 DBZ-5907
重新启动时数据丢失 DBZ-5915
增加支持连接顶到Debez服务器 DBZ-5926
甲骨文多线程丢失数据 DBZ-5945
扳手连接器缺少jr-310依赖关系 DBZ-5959
与外部新记录状态不兼容的截断记录 DBZ-5966
计算分区不得为负 DBZ-5967
用于快照的表大小日志消息。选择。说明。覆盖表不正确 DBZ-5985
在执行具有排他性的快照信号中的NPE。 DBZ-5988
后GRESQLY连接器分析货币类型的边界值时存在问题。 DBZ-5991
在Mysql31-ascma中,无法解析的DDL语句的日志语句包含占位符 DBZ-5993
连接器将货币类型的空解析为0 DBZ-6001
检查应该尊重事件。处理失败。处理。 DBZ-6012
一起来, 42个问题 已经做好了准备。我非常感谢所有参与这个版本的贡献者, 阿尼尔·达萨里 , 库马尔 , 阿尼莎 , 鲍勃·罗丹 , 克兰福德 , 厄迪南塔希尔河 , 戈文达·萨哈雷 , , 侯赛因托拉比 , 因德拉舒克拉 , 雅各布萨拉斯 , 杰里米·福特 , 伊里·帕坎奇c , 约翰·沙兰达 , 卢卡斯坎纳皮生态 , 马里奥菲奥尔维塔莱 , 马克兰伯特 , 拉金德拉·当瓦尔 , 孙小健 , 沃伊泰克 , 吉木洋平 ,以及 吉木洋平 !
接下来呢?
随着德贝泽姆2.2之路的开始,这个初始版本涵盖了我们最近2023年概述的许多功能 路线图 更新。不过,仍有一些特点仍在积极发展中,其中包括:
可配置的信号通道,使用户不仅可以从数据库表或卡夫卡主题发送信号,还可以从其他手段,如http端点、文件系统等。
支持本地德贝兹变化事件的德贝兹JDBC接收器连接器不需要使用事件扁平化转换。
一种新的单一信息转换,ExtractChangedRecordState 支持将标题添加到所发出的事件中,该事件描述了由源事件更改或更改的字段。
德贝佐姆用户界面的大量增强
当我们继续开发德贝齐尔2.2和德贝齐尔2.1时,我们希望听到你的反馈或建议,无论是关于我们的路线图、版本中的变化,还是你希望看到我们没有提到的东西。一定要联系我们 邮寄清单 或我们的 聊天 如果有的话。或者如果你只是想过来给我们打个招呼,我们也会欢迎的。
直到下次…