Debezium日常分享系列之:Debezium 2.5.0.Beta1发布

Debezium日常分享系列之:Debezium 2.5.0.Beta1发布

  • 一、重大变化
    • 1.分片部署中的 MongoDB 快照
    • 2.移除ComputePartition SMT
    • 3.JDBC 接收器值序列化更改
  • 二、新功能和改进
    • 1.初始快照的附加通知
    • 2.MySQL高精度源时间戳
    • 3.MariaDB GTID 支持
    • 4.从 PostgreSQL 16 备用服务器进行流式传输
    • 5.JDBC 接收器字段包含/排除
    • 6.Debezium 服务器 - EventHubs 分区
    • 7.Debezium 服务器 - RabbitMQ Streams 接收器
    • 8.Debezium Operator - CRD 服务帐户

Debezium 2.5.0.Beta1 现已推出。此版本包括许多改进,例如对 MariaDB GTID 的支持、Debezium Server EventHub 接收器的分区、本机 RabbitMQ 流 Debezium Server 接收器、来自 PostgreSQL 16 备用数据库的流式传输、MySQL 高精度源时间戳、使用 JDBC 接收器的字段包含/排除、初始快照的一些附加通知以及 Debezium Operator CRD 的服务帐户支持。此外,此版本还包括各种错误修复和一些重大更改。

一、重大变化

此版本包含多项重大更改。

1.分片部署中的 MongoDB 快照

在 Debezium 的早期版本中,用户可以使用 MongoDB 连接器,并在使用 MongoDB 分片部署时在特定分片上执行集合快照。不幸的是,虽然我们知道用户可能利用了此行为,但这是无意的且不受支持。

Debezium 2.5 完全删除了这种功能,完全弃用并删除 MongoDB 中的副本集流模式是未来目标中的一步。

2.移除ComputePartition SMT

ComputePartition 是一个 SMT,使用户能够计算所需的分区,并为其在 Kafka 主题中写入事件。此单消息转换 (SMT) 不久前已被弃用,取而代之的是新的 PartitionRouting 单消息转换。

Debezium 2.5 删除了旧的、已弃用的 ComputePartition,并且可能仍在依赖此 SMT 的用户将需要迁移到新的 PartitionRouting SMT。

3.JDBC 接收器值序列化更改

报告了一个极端情况,即 JDBC 接收器连接器错误地将具有空值的字段写入目标数据库,并使用默认值而不是 NULL 值。

二、新功能和改进

Debezium 2.5 还引入了更多改进和功能,让我们分别看一下。

1.初始快照的附加通知

Debezium 的通知子系统提供了一种将外部流程和应用程序与某些 Debezium 任务(例如拍摄快照)集成的简单方法。在之前的版本中,初始快照的通知非常基本,并提供了详细信息,例如快照何时开始、每个表何时开始和结束以及最终快照何时结束。

提供有关快照的增强详细信息。例如,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)目前不适用于 MongoDB 快照,仅适用于基于 SQL 的关系连接器。

2.MySQL高精度源时间戳

多个 MySQL 复制事件中已包含多个新的高精度时间戳字段。例如,在 MySQL 8.0.1 中,GTID 事件中添加了微秒分辨率的时间戳,指定在直接主数据库上提交事务以及在原始主数据库上提交事务时的时间戳。

Debezium 2.5 现在利用这些值,如果可用,则将它们用于 ts_ms 字段,如果不可用或者您使用的是 8.0.1 之前的 MySQL 版本,则回退到基于秒的精度。

3.MariaDB GTID 支持

MySQL 和 MariaDB 都支持所谓的全局事务标识符或 GTID。它们在复制中用于唯一地标识整个集群中的事务。 MySQL 和 MariaDB 之间的实现细节存在显着差异,在 Debezium 的早期版本中,我们仅支持 MySQL 的 GTID。

在 Debezium 2.5 中,我们又向前迈出了一步,引入了对 MariaDB 的 GTID 支持,作为 MySQL 连接器产品的一部分。为了利用此行为,您需要通过使用前缀为 jdbc:mariadb 而不是 jdbc:mysql 的 JDBC 连接来使用 MariaDB 驱动程序而不是 MySQL 驱动程序。通过这样做,现在可以像 MySQL一样充分利用 MariaDB 和 GTID。

计划在 Debezium 2.6 中为 MariaDB 引入一个新的独立连接器。我们在 2.5 中所做的很多工作都将延续到 2.6 中的这个新连接器,因此我们早期获得的任何反馈只会有利于 2024 年初的过渡!

4.从 PostgreSQL 16 备用服务器进行流式传输

在 PostgreSQL 16 中,现在可以在备用实例上定义复制槽。这带来了大量的新选项,包括从副本而不是生产系统执行更改数据捕获以进行负载分配的能力,特别是在非常活跃的数据库中。

Debezium 2.5 现在支持连接到备用 PostgreSQL 16 服务器和流式更改。

5.JDBC 接收器字段包含/排除

Debezium 2.5 引入了新的 JBDC 接收器功能,用户现在可以指定事件负载中的哪些字段要包含在目标数据库写入操作中或从目标数据库写入操作中排除。此功能的工作原理与 Debezium 框架中的任何其他包含/排除组合一样,其中这两个属性是互斥的。

例如,如果我们有一个简单的事件负载,主题客户中包含以下字段:

{"id": 12345,"name": "Acme","address": "123 Main Street"
}

如果我们想避免将address字段写入目标数据库,而只将id和name字段写入目标表,我们可以使用这个新功能来完成此任务。这可以通过添加 field.include.list 或 field.exclude.list 属性来完成。

阻止将地址字段写入目标的示例

{"field.exclude.list": "customers:address"
}

包含/排除字段的格式为 [<主题名称>:]<字段名称>,其中主题名称是可选的,如果您想避免写入所有事件的地址字段,则可以省略。

6.Debezium 服务器 - EventHubs 分区

在 Debezium Server 的早期版本中,用户可以指定固定分区 ID 将所有更改流式传输到单个分区,或者提供将在所有批处理操作上设置的静态分区键,这最终有助于将所有更改流式传输到同一个分区目标分区。在某些情况下,这可能会有所帮助,但它更经常导致下游处理的性能问题。

Debezium 2.5 调整了此行为以提高性能。默认情况下,当未定义partitionid或partitionkey时,EventHub接收器将使用循环技术将事件发送到所有可用分区。通过指定分区 ID,可以将事件强制放入单个固定分区中。或者,可以提供分区键来提供固定分区键,该固定分区键将用于将所有事件路由到特定分区。

如果需要额外的分区路由要求,您现在可以结合 PartitionRouting SMT 完成此类任务。

7.Debezium 服务器 - RabbitMQ Streams 接收器

RabbitMQ 在 3.9 版本中引入了 Streams,它利用快速高效的协议,可以与 AMQP 0.9.1 结合使用,以支持大扇出、重放和时间旅行以及具有极高吞吐量的大数据集。 Debezium 2.5 通过引入新的本机 Streams 实现来利用这一新的 Streams 实现。为了开始使用这个新的实现,请按如下方式配置 Debezium Server 接收器:

debezium.sink.type=rabbitmqstream
debezium.sink.rabbitmqstream.connection.host=<hostname of RabbitMQ>
debezium.sink.rabbitmqstream.connection.port=<port of RabbitMQ>

此外,如果您需要将任何其他连接参数传递给 RabbitMQ 连接,您可以通过将这些参数添加到带有前缀 debezium.sink.rabbitmqstream.connection 的配置来实现。传递任何配置属性。

8.Debezium Operator - CRD 服务帐户

在 Debezium 的早期版本中,无法使用与预定义名称不同的服务帐户。这使得该过程对于用户来说有点麻烦,因为虽然您可以单独向此预定义帐户授予角色和授权,但这意味着您需要使用此预定义服务帐户,而不是您可能已经希望使用的帐户。

Debezium 2.5 简化了此过程,允许现在使用自己的自定义服务帐户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR游戏虚拟现实游戏的发展:现状与未来

随着技术的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;游戏已经从一个尖端概念转变成为一个日益成熟和普及的行业。本文探讨了VR游戏的当前发展状况和面临的挑战&#xff0c;以及其未来的潜在趋势。 技术进步推动VR游戏发展 VR硬件的革新是推动该领域发展的主要…

串口通信(1)-硬件知识

本文讲解串口通信的硬件知识。让读者快速了解硬件知识&#xff0c;为下一步编写代码做基础。 目录 一、概述 二、串口通信分类 2.1信息的传送方向进行分类 2.2同步通信和异步通信 三、串口协议 3.1 RS232 3.1.1 电气特性 3.1.2 连接器的机械特性 3.1.3 连接类型 3.1…

【SpringBoot】入门精简

目录 一、初识 SpringBoot 1.1 介绍 1.2 项目创建 1.3 目录结构 1.4 修改配置 二、SpringBoot 集成 2.1 集成 Mybatis框架 2.2 集成 Pagehepler分页插件 2.3 集成 Druid数据库连接池 2.4 集成 Log日志管理 一、初识 SpringBoot 1.1 介绍 Spring Boot是一个用于简化Sp…

猎豹浏览器如何设置ip使用?socks5在网络安全中有什么优势?

猎豹浏览器如何设置ip使用&#xff1f;socks在网络安全中有什么优势&#xff1f; 一、猎豹浏览器如何设置ip使用&#xff1f; 在使用猎豹浏览器时&#xff0c;可以通过以下步骤来设置IP使用&#xff1a; 1. 打开猎豹浏览器&#xff0c;点击右上角的“菜单”按钮&#xff0c;在…

有趣的数学 数学建模入门三 数学建模入门示例两例 利用微积分求解

一、入门示例1 1、问题描述 某宾馆有150间客房&#xff0c;经过一段时间的经营&#xff0c;该宾馆经理得到一些数据&#xff1a;如果每间客房定价为200元&#xff0c;入住率为55&#xff05;&#xff1b;定价为180元&#xff0c;入住率为65&#xff05;&#xff1b;定价为160元…

圆通单号查询,圆通速递物流查询,用表格导出单号的详细物流信息

批量查询圆通速递单号的物流信息&#xff0c;以表格的形式导出单号的详细物流信息。 所需工具&#xff1a; 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主…

解决canvas清晰度问题devicePixelRatio

视频教程 解决canvas清晰度的问题【渡一教育】_哔哩哔哩_bilibili 检测网页本身是否缩放 ,即缩放倍率 window.devicePixelRatio 为了获得清晰图像,需要遵循以下公式 原始尺寸样式尺寸*缩放倍率 在项目中,canvas里的原始尺寸一般与css中的样式尺寸一样,所以在写js代码时,涉…

数据库 02-03补充 聚合函数--一般聚合分组和having

聚合函数&#xff1a; 01.一般的聚合函数&#xff1a; 举个例子&#xff1a; 一般聚合函数是用于单个元祖&#xff0c;就是返回一个数值。 02.分组聚合&#xff1a;可以返回多个元祖 举个例子&#xff1a; 分组的注意&#xff1a; 主要的是根据分组的话&#xff0c;一个…

盲盒小程序搭建:年入百W的“盲盒经济”

盲盒作为一种新的商业模式&#xff0c;正引领着新的消费热潮。尤其是在当下年轻人群体中&#xff0c;盲盒的影响力非常大。 盲盒作为一种新的消费方式&#xff0c;因其具备的不确定性、未知性、惊喜性&#xff0c;刺激着消费者的购买欲。在现在的商城中&#xff0c;盲盒的身影…

2台MySQL 8.0快速配置主从同步

在MySQL 8.0中设置主从同步&#xff0c;并启用GTID&#xff08;全局事务标识符&#xff09;&#xff0c;可以按照以下详细步骤进行&#xff1a; 1. 准备主服务器 编辑MySQL配置文件&#xff08;通常是my.cnf或my.ini&#xff09;&#xff1a; [mysqld] server-id 1 log_bin …

AutoAnimate动画库,仅需一行代码

插件官网,支持react,vue AutoAnimate - Add motion to your apps with a single line of code 自动加动画原理 AutoAnimate 加动画的原理也很简单&#xff0c;监听绑定的 DOM 节点里 DOM 结构变化&#xff0c;自动添加对应的过渡动画&#xff1a; 增加子节点 > 渐入动画…

Redis(三):常见数据类型:List、Set、Zset

List 列表 列表类型是用来存储多个有序的字符串&#xff0c; 如图&#xff1a; a、b、c、d、e 五个元素从左到右组成 了⼀个有序的列表&#xff0c;列表中的每个字符串称为元素&#xff08;element&#xff09;&#xff0c;⼀个列表最多可以存储个元素。在 Redis 中&#xff…

华为儿童手表,运动的引领者

作为家长&#xff0c;你是否经常为孩子的健康担忧&#xff0c;也一直在寻找一种可以与孩子一起运动、记录运动数据并让孩子产生对运动感兴趣的设备&#xff1f; 那不妨试试华为儿童手表&#xff0c;一款拥有专业的运动模式的智能手表。孩子只需简单操作手表&#xff0c;就能开…

自动化测试 —— Web自动化三大报错

Web自动化三大报错有哪些呢&#xff1f;接下来给大家讲讲。 Web自动化三大报错&#xff08;Exception&#xff09; 1. Exception1&#xff1a;no such element&#xff08;没有在页面上找到这个元素&#xff09; reason1&#xff1a;元素延迟加载了 solution&#xff1a; …

深度学习 Day11——T11优化器对比实验

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;3.导入数据4.查…

Docker部署Mysql5.7x和Myslq8.x

Docker部署Mysql5.7x和Myslq8.x 文章目录 1.部署mysql5.7.x2.部署mysql8.x3.创建用户授权及远程登录3.1 mysql5.7创建用户授权及远程登录3.2 mysql8创建用户授权及远程登录 4.总结 1.部署mysql5.7.x 在D盘下的mysql目录下新建如下目录&#xff1a; D:\mysql\conf\my.cnf内容如下…

centos7 docker Mysql8 搭建主从

Mysql8 搭建主从 docker的安装docker-compose的安装安装mysql配置主从在master配置在slave中配置在master中创建同步用户在slave中连接 测试连接测试配置测试数据同步遇到的问题id重复错误执行事务出错&#xff0c;跳过错误my.cnf 不删除多余配置的错误可能用到的命令 docker的…

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 断点 Break 命令篇】

文章目录 1. Break.Set1.1 TRACE32 Break1.1.1 Break命令控制CPU的暂停1.2 Break.Set 设置断点1.2.1 Trace32 程序断点1.2.2 读写断点1.2.2.1 变量被改写为特定值触发halt1.2.2.2 设定非值触发halt1.2.2.4 变量被特定函数改写触发halt1.2.3 使用C/C++语法设置断点条件1.2.4 使用…

苍穹外卖项目笔记(11)— 数据统计-图形报表

前言 代码链接&#xff1a; Echo0701/take-out⁤ (github.com) 1 Apache ECharts 基于 Javascript 的数据可视化图标库&#xff0c;提供直观生动可交互可个性定制的数据可视化图表 柱形图饼形图折线图 【核心】通过直观的图表来展示数据。使用 Echarts &#xff0c;重点在…