原文地址: https://debezium.io/blog/2023/12/04/debezium-2-5-beta1-released/
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
Debezium 2.5.0.Beta1 Released
December 4, 2023 by Chris Cranford
releases mongodb mysql mariadb postgres sqlserver cassandra oracle db2 vitess outbox spanner informix
当我们开始接近德贝兹2.5的最后阶段时,我高兴地宣布 2.5.0.Beta1 现在可以使用了。该版本包括一些改进,如对MariadbGtid的支持,对Debezum服务器的接收器的分区,本地的拉比特-MQ流德贝齐姆服务器接收器,从后格-SQL16备用数据库流,mysql高精度的源时间戳,JDBC接收器的字段包含/排除,对初始快照的一些额外通知,以及对德贝齐姆运营商CRDS的服务帐户支持。此外,这个版本包括各种各样的错误修复和几个打破更改。
让我们更仔细地看看包括在Debezum2.5.0.Beta1中的所有这些更改和改进;一如既往,您可以在 释放说明 .请记住特别注意任何可能影响升级路径的破坏性更改。
突破性变化
在我们努力避免打破变化的同时,有时候这些变化是不可避免地演变为正确的方向。这个版本包括几个断裂更改。
共享部署中的蒙戈德快照
在Debezum的早期版本中,用户可以使用蒙戈德连接器,并在使用蒙戈德分叉部署时在特定碎片上执行集合的快照。不幸的是,虽然我们理解用户可能已经利用了这种行为,但它是意外的,不支持。
Debezum2.5完全删除了这个功能,这是在前方目标中的一个步骤,即完全删除蒙戈数据库中的复制器设置流模式( DBZ-7139 ).
删除SMT
…ComputePartition 是一个SMT,它使用户能够计算需要的分区,其中一个事件将被写入卡夫卡主题。这个单一消息转换(SMT)在不久前就被弃用了,以支持新的PartitionRouting 单消息转换。
去贝素2.5去除旧的,被抛弃的ComputePartition ,而那些仍然依赖这种SMT的用户将需要迁移到新的PartitionRouting 如果你还没有这样做( DBZ-7141 ).
JDBC汇值序列化更改
据报道,在一个角案例中,JDBC接收器连接器错误地写入了null 对目标数据库的值,以默认值代替NULL .这已在德贝兹2.5( DBZ-7191 ).
新的特点和改进
Debezum2.5还引入了更多的改进和功能,让我们分别查看每个。
初始快照的附加通知
Debezum的通知子系统提供了一种简单的方法,可以将外部进程和应用程序集成到某些Debez任务上,例如快照。在以前的版本中,初始快照的通知非常基本,提供了细节,例如快照何时开始,每个表何时开始和结束,以及快照何时结束。
最近的贡献是 DBZ-6878 扩展此基础功能以提供有关快照的增强详细信息。例如,IN_PROGRESS 通知将提供更多细节,说明正在捕获哪些表格,哪些表格正在编制中,详情如下:
{
“id”:“6d82a3ec-ba86-4b36-9168-7423b0dd5c1d”,
“aggregate_type”:“Initial Snapshot”,
“type”:“IN_PROGRESS”,
“additional_data”:{
“connector_name”:“my-connector”,
“data_collections”:“table1, table2”,
“current_collection_in_progress”:“table1”
},
“timestamp”: “1695817046353”
}
此外,另一个初始快照通知称为TABLE_SCAN_COMPLETED 还提供了类似的详情,如下所示:
{
“id”:“6d82a3ec-ba86-4b36-9168-7423b0dd5c1d”,
“aggregate_type”:“Initial Snapshot”,
“type”:“TABLE_SCAN_COMPLETED”,
“additional_data”:{
“connector_name”:“my-connector”,
“data_collection”:“table1, table2”,
“scanned_collection”:“table1”,
“total_rows_scanned”:“100”,
“status”:“SUCCEEDED”
},
“timestamp”: “1695817046353”
}
上面所示的几个字段data_collection 这些当前不适用于蒙戈德快照,只适用于基于sql的关系连接器。
详情请参阅 通知文件 .
Mysql高精度源时间戳
一些新的高精度时间戳字段已经被包括在一些mysql复制事件中。例如,在mysql8.0.1中,有微第二分辨率时间戳添加到Gtid事件中,这些事件指定事务在直接主程序上提交时和在原始主程序上提交时的时间戳。
去贝沙2.5现在利用这些值,并将其用于ts_ms 如果它们是可用的,那么将回到基于第二级的精确度,如果它们是可用的,或者如果您在8.0.1之前使用了mysql的版本( DBZ-7183 ).
支助
MySQL和Mariadb都支持所谓的全局事务标识符或GTDS。它们用于复制,以唯一地标识跨集群的事务。mysql和Mariadb之间的实现细节有很大的不同,在早期的Debezum版本中,我们只支持与mysql的Gtid。
用Debezum2.5,我们正在采取另一个步骤,引入Gtid支持的马里亚迪作为部分的mysql连接器提供。为了利用这种行为,您将需要通过使用JDBC连接作为前缀的JDBC驱动程序而非mysql驱动程序来使用该驱动程序。jdbc:mariadb 与其说jdbc:mysql .通过这样做,你现在可以充分利用和mysql一样的马里亚迪和Gtid一起工作( DBZ-1482 ).
计划为马里亚迪引进一个新的独立连接器。我们在2.5中所做的很多工作将延续到2.6中的这个新连接器中,所以我们可以在更早的时候获得的任何反馈都将在2024年初的过渡中受益!
从16号高速公路流
在后GRESQ16中,现在可以在备用实例上定义复制槽。这将允许过多的新选项,包括从副本而不是从您的生产系统中执行更改数据捕获以进行负载分配的能力,特别是在非常活跃的数据库中。
Debezum2.5现在支持连接到一个备用的后行sql16服务器和流更改( DBZ-7181 ).
JDBC汇域包含/排除
Debezum2.5引入了一个新的JBDC接收器功能,用户现在可以指定事件有效载荷中的哪些字段将被包括在目标数据库写入操作中或被排除在其中。这个特性就像任何其他包含/排除Debezum框架中的组合一样,这两个属性是相互排斥的。
举个例子,如果我们有一个具有以下主题字段的简单事件有效载荷customers :
{
“id”: 12345,
“name”: “Acme”,
“address”: “123 Main Street”
}
如果我们不想写address 在目标数据库中写入id 和name 字段到目标表,我们可以使用这个新功能来实现这一点。我们可以增加一个field.include.list 或field.exclude.list 财产。
防止将地址字段写入目标的示例
{
“field.exclude.list”: “customers:address”
}
字段包括/排除的格式是[:] ,如果你想避免填写address 所有活动的场地。详情请参阅JDBC接收器连接器配置文档。
德贝齐斯服务器----甚至是分区
在Debezum服务器的早期版本中,用户可以指定一个固定的分区来将所有更改流到一个单独的分区,或者提供一个静态的分区键,这个分区键将被设置在所有的批处理操作上,最终将所有更改流到同一个目标分区。在有些情况下,这可能会有所帮助,但更经常地导致下游处理的性能问题。
德贝唑2.5调整这种行为,以提高性能。在默认情况下partitionid 或partitionkey 定义后,该Evuub接收器将使用循环技术将事件发送到所有可用的分区。通过指定一个单独的、固定的分区,可以强制事件。partitionid .或者,partitionkey 可以提供一个固定的分区键,用于将所有事件路由到特定的分区。
如果需要额外的分区路由要求,现在可以将PartitionRouting 完成这些任务。详情请参阅 活动中心文件 .
德贝兹服务器-兔子MQ流接收器
介绍 流 在第3.9版中,它使用一种快速有效的协议,可以与amqp0.9.1相结合,以支持大规模的页面输出、重播和时间旅行,以及具有极高吞吐量的大型数据集。通过引入新的本地流实现( DBZ-6703 )。为了开始这个新的实现,请将Debezum服务器接收器配置如下:
debezium.sink.type=rabbitmqstream
debezium.sink.rabbitmqstream.connection.host=
debezium.sink.rabbitmqstream.connection.port=
此外,如果您需要将任何其他连接参数传递到拉比特MQ连接,您可以通过使用前缀将这些参数添加到配置中来实现。debezium.sink.rabbitmqstream.connection. 传递任何配置属性。
请看 德贝兹服务器的兔子MQ文档 更多的细节。
德贝兹操作员-CRDS服务帐户
在前几个版本的Debezum中,不可能使用与预先定义的不同命名的服务帐户。这使得这个过程对用户来说有点麻烦,因为虽然您可以单独授予这个预先定义的帐户的角色和授权,但这意味着您需要使用这个预先定义的服务帐户,而不是一个您可能已经希望使用的帐户。
Debezum2.5简化了这个过程,现在您可以使用自己的自定义服务帐户( DBZ-7111 ).
其他补救措施
此外,有相当多的稳定性和错误修复使它进入这个版本。其中包括:
为操作员模型生成太阳能流利的构建者 DBZ-6550
将运营商源代码转换为多模块项目 DBZ-6551
在连接器专用连接休息扩展中实现"验证滤波器"端点 DBZ-6762
测试蒙戈数据库连接器和外部文件状态SMT的AVro调整 DBZ-6809
在主回购系统中实现对云扳手模拟器的测试。 DBZ-6906
删除策略无法将重写的"_删除"字段添加到非结构值中 DBZ-7066
为马里亚迪b和mysql差异实现策略模式 DBZ-7083
德贝兹服务器没有默认的抵消。 DBZ-7099
快照后未能对mysql数据库进行身份验证 DBZ-7132
运行MySQLCI并行构建 DBZ-7135
信息中的故障读数12.10 DBZ-7137
在解析mysqddl语句时(特定联合) DBZ-7140
当场内有空格时,用SMT抛出无空腔。附加值。 DBZ-7142
在解析mysqqddl语句时(特定更新) DBZ-7152
为工作流程增加矩阵战略 DBZ-7154
在德贝兹姆操作库中添加服务账户依赖类的单元测试 DBZ-7155
使用复合分叉键无法处理来自分叉集合的更改 DBZ-7157
日志序列检查应该独立处理每个重做线程 DBZ-7158
如果一个值不是阴云的,在反社会化过程中迅速失效 DBZ-7159
正确的计算最大解 DBZ-7175
升级至英菲尼斯潘14.20.20 DBZ-7187
向夸库延伸3.5.3 DBZ-7188
修复Debeziummysql连接资源,不使用新的mysqadatper结构来支持不同的mysql风格 DBZ-7179
分析JSON字段的mysql索引失败时,使用类型双和浮的铸造 DBZ-7189
未更改的烤数组列替换为无法使用的。值。位置保持器,即使配置了所有副本标识。 DBZ-7193
使能够根据甲骨文23C对伐木工进行更改 DBZ-7194
在解析LS/sql中,添加修改范围的修改分配规则 DBZ-7196
只在没有事件的情况下,对阻塞快照的蒙戈德流暂停 DBZ-7206
在LS/sql中处理下表空间 DBZ-7208
升级到1.2.12 DBZ-7209
生物学研究。 DBZ-7211
一起来, 54个问题 已经做好了准备。我非常感谢所有参与这个版本的贡献者:帕维萨拉南达帕拉布, 文森佐·桑托纳斯塔索 , 艾哈迈德·拉希德·哈祖利 , 阿尼莎 , 克兰福德 , 贡纳·莫林 , , 伊利亚·阿赫桑 , 王英基 , 杰克布切切克 , 伊里库拉哈尼克 , 伊里·帕坎奇c , 科斯塔·科斯特尔尼克 , 拉尔斯。约翰松 , 洛德斯·诺德 , 马里奥菲奥尔维塔莱 , 马特万斯 , 勒内·克纳 , 罗丹 , 罗马库德里亚索夫 , 尼恩堡 , 沃伊泰克 , 巴巴盖伊 ,以及 鲁斯兰 !
接下来呢?
我们大约有三个星期的假期休息,因此这将是我们唯一的测试版本的Debezum2.5。我们打算在下周中期释放我们的候选人,并在假日假期前一周完成最后期限。
该小组还在研究一个维护版本的Debezum2.4,将于本周晚些时候发布。这个对Debezum2.4的更新将为2.4发布流带来一系列的错误修复和稳定性改进。
该小组还正在最后确定2024年的路线图。我将在本周晚些时候在我们的网站上公布详细信息,并详细介绍德贝佐姆2.5和我们的2024路线图,作为我们12月12日星期二上午10点的德贝佐姆社区活动的一部分。欢迎各位出席。 谷歌会议 .