随着夏天的临近,我很兴奋地宣布Debezium的发布开云体育官方注册网址gydF4y2Ba1.9.3.FinalgydF4y2Ba!gydF4y2Ba

这个版本主要关注bug修复和稳定性;但是,有一些显著的功能增强。让我们花点时间冷静下来,并“深入”研究这些新功能的一些细节:)。gydF4y2Ba

用MongoDB和发件箱解码二进制有效负载gydF4y2Ba

开云体育电动老虎机数据库从一开始就支持存储二进制数据,应用程序倾向于使用数据库而不是其他替代方案的原因有很多。二进制数据并不总是像图像、缩略图这样的信息,或者像pdf这样的二进制文档,它也可以包括序列化的对象。gydF4y2Ba

在MongoDB和Avro序列化使用发件箱模式时,发件箱的有效载荷字段是消息值中发出的唯一值。当有效负载由二进制数据组成时(如下所示),它是按原样发出的,并且可能导致主题的使用者出现一些序列化问题。gydF4y2Ba

{gydF4y2Ba"gydF4y2Ba有效载荷gydF4y2Ba"gydF4y2Ba: {gydF4y2Ba"gydF4y2Ba二元美元gydF4y2Ba"gydF4y2Ba:gydF4y2Ba"gydF4y2Ba"gydF4y2BaRgydF4y2BaGgydF4y2BaVgydF4y2Ba我gydF4y2BaZgydF4y2BaXgydF4y2BapgydF4y2BapgydF4y2BadgydF4y2BaWgydF4y2Ba0gydF4y2BaggydF4y2Ba一个gydF4y2BaXgydF4y2Ba米gydF4y2BaggydF4y2BadgydF4y2BaGgydF4y2BahgydF4y2BalgydF4y2Ba我gydF4y2BaGgydF4y2BaJgydF4y2BalgydF4y2BacgydF4y2Ba3.gydF4y2Ba问gydF4y2BaugydF4y2Ba"gydF4y2Ba,gydF4y2Ba"gydF4y2Ba$gydF4y2BatgydF4y2BaygydF4y2BapgydF4y2BaegydF4y2Ba"gydF4y2Ba:gydF4y2Ba"gydF4y2Ba0gydF4y2Ba"gydF4y2Ba}}gydF4y2Ba

在这个版本中,我们已经弃用了gydF4y2BaByteBufferConvertergydF4y2Ba我们在这里引入了两个新的转换器:gydF4y2Ba

  • ByteArrayConvertergydF4y2Ba:将有效负载转换为实际交付,agydF4y2Babyte []gydF4y2Ba.gydF4y2Ba

  • BinaryDataConvertergydF4y2Ba:将负载转换为agydF4y2BaByteBuffergydF4y2Ba或gydF4y2BaByte []gydF4y2Ba.gydF4y2Ba

对于这个用例,我们将使用newgydF4y2BaByteArrayConvertergydF4y2Ba因为我们想要将这个有效载荷的值作为原始值发出gydF4y2Babyte []gydF4y2Ba.在连接器配置中,gydF4y2Bavalue.convertergydF4y2Ba必须设置配置选项来处理此用例。gydF4y2Ba

变换=发件箱,…transforms.outbox.type = i开云体育官方注册网址o.debezium.connector.monogdb.transforms.outbox.MongoEventRouter value.converter = io.debezium.converters.ByteArrayConvertergydF4y2Ba

现在,数据将按原样发送到代理,作为消费者可以安全使用的字节数组。感谢Nathan Bradshaw的出色贡献!gydF4y2Ba

使用Oracle进行心跳操作查询gydF4y2Ba

心跳动作查询是一个特性,它允许Debezium连接器将记录写入源数据库,并在事件处理循环期间捕获这些记录。开云体育官方注册网址开云体育电动老虎机这最初是为PostgreSQL引入的,用于处理被捕获表的更改频率低于其他未捕获表的情况,从而导致意外的WAL增长。gydF4y2Ba

对于使用LogMiner实现的Oracle来说,也会出现类似的问题,影响连接器重新启动的能力,因为偏移SCN没有按常规间隔前进,这是由于对没有捕获的其他表所做的更改造成的,无论这些表是同一个可插拔数据库的一部分还是另一个表。开云体育电动老虎机gydF4y2Ba

要启用心跳动作查询,连接器必须配置:gydF4y2Ba

heartbeat.interval.ms = 1000 heartbeat.action。查询=INSERT INTO心跳(id)值(SYSDATE) table.include.list=MYSCHEMA.HEARTBEAT,…gydF4y2Ba

属性必须首先启用心跳功能gydF4y2Baheartbeat.interval.msgydF4y2Ba.这控制连接器生成心跳事件的频率。如果这个值不大于gydF4y2Ba0gydF4y2Ba,则心跳停止。gydF4y2Ba

接下来,具体使用操作查询特性gydF4y2Baheartbeat.action.querygydF4y2Ba必须给予选择。这指定了将在每个心跳间隔上执行的SQL语句。这个语句可以是angydF4y2Ba插入gydF4y2Ba或者一个gydF4y2Ba更新gydF4y2Ba,只要结果SQL操作生成行更改即可。gydF4y2Ba

最后,操作查询必须对连接器筛选器配置中包含的表进行操作。与任何其他捕获的表一样,表也必须配置正确的补充日志记录,以便捕获事件。gydF4y2Ba

有了这个配置,并且假设没有长时间运行的事务,偏移SCN将在每个心跳上前进。gydF4y2Ba

LogMiner会话持续时间现在是可控的gydF4y2Ba

Debe开云体育官方注册网址zium Oracle连接器的LogMiner会话持续时间总是基于重做日志切换的频率。通常,这种行为在大多数环境中都能很好地工作;然而,在低流量环境或非高峰时段,这有可能重复使用同一LogMiner会话较长一段时间,当PGA内存耗尽时,可能导致ORA-04030异常。gydF4y2Ba

添加了一个新的配置选项,gydF4y2Balog.mining.session.max.msgydF4y2Ba,允许完全控制Oracle LogMiner会话的最大持续时间。当设置为大于gydF4y2Ba0gydF4y2Ba,连接器将自动关闭并重新启动挖掘会话,如果达到最大持续时间或发生日志切换,以先发生者为准。当启用这个新选项时,低容量的Oracle环境(特别是在非高峰时段)应该不再注意到任何PGA内存问题。与数据库管理员团队协作,根据环境的配置和活开云体育电动老虎机动确定最佳值。gydF4y2Ba

进一步的改变gydF4y2Ba

但这还不是全部,还有一些值得注意的错误修复,包括但不限于:gydF4y2Ba

  • MySQL连接器增量快照解析datetime列长度失败,当连接器设置“snapshot.fetch”时。大小:20000gydF4y2Badbz - 4939gydF4y2Ba

  • MongoDb连接器指标注册时出现InstanceAlreadyExistsException异常gydF4y2Badbz - 5011gydF4y2Ba

  • 在Postgres连接器中无法解析文本'infinity'gydF4y2Badbz - 5014gydF4y2Ba

  • 每个连接器4个连接(postgres)gydF4y2Badbz - 5074gydF4y2Ba

  • Oracle Logminer:从快照模式切换到流模式时丢失记录gydF4y2Badbz - 5085gydF4y2Ba

  • 不能将debezum 开云体育官方注册网址.sink.kafka.producer.ssl.endpoint. identity .algorithm设置为空值gydF4y2Badbz - 5105gydF4y2Ba

  • msecondsbehindsource不会被SQL Server连接器报告gydF4y2Badbz - 5137gydF4y2Ba

  • ExtractNewRecordState SMT用列的默认值替换空值gydF4y2Badbz - 5166gydF4y2Ba

  • Oracle连接器对回滚和放弃事务的度量跟踪可能会导致高内存使用gydF4y2Badbz - 5179gydF4y2Ba

我们强烈建议升级到1.9.3。最终在性能和稳定性上都得到了最新的改进。gydF4y2Ba

总的来说,gydF4y2Ba47个问题gydF4y2Ba已在此版本中修复。详情请参阅gydF4y2Ba发布说明gydF4y2Ba要了解更多关于所有已修复的错误,更新程序等。gydF4y2Ba

非常感谢社区中为Debezium 1.9.3.Final做出贡献的以下个人:开云体育官方注册网址gydF4y2BaAlexey MiroshnikovgydF4y2Ba,gydF4y2Ba莫汉蒂AnishagydF4y2Ba,gydF4y2Ba鲍勃Roldan称gydF4y2Ba,gydF4y2Ba克里斯克兰福德gydF4y2Ba,gydF4y2Ba康纳SzczepaniakgydF4y2Ba,gydF4y2Ba塞萨尔马丁内斯gydF4y2Ba,gydF4y2Ba哈维曰gydF4y2Ba,gydF4y2BaHimanshu MishragydF4y2Ba,gydF4y2BaJakub CechacekgydF4y2Ba,gydF4y2Ba雅罗西克PechanecgydF4y2Ba,gydF4y2Ba马克AllansongydF4y2Ba,gydF4y2Ba马克BereznitskygydF4y2Ba,gydF4y2Ba内森·布拉德肖gydF4y2Ba,gydF4y2Ba谢尔盖·莫洛佐夫gydF4y2Ba,gydF4y2BaStefan MiklosovicgydF4y2Ba,gydF4y2BaVadzim RamanenkagydF4y2Ba,gydF4y2BaVojtech JuranekgydF4y2Ba!gydF4y2Ba

前景gydF4y2Ba

Debe开云体育官方注册网址zium 1.9发布流将在未来三个月内保持当前的长期运行版本。在此期间,我们将继续评估用户报告,并根据严重程度进行微发布以解决错误和回归。gydF4y2Ba

另外,Debezium 2.0也做了很多工作。开云体育官方注册网址我们打算发布Debezium 2.0.0。开云体育官方注册网址Alpha2将于下周发布,此后大约每三周发布一次。gydF4y2Ba

敬请关注未来几周的更多内容,保持冷静!gydF4y2Ba

克里斯克兰福德gydF4y2Ba

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


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

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

参与gydF4y2Ba

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