原文地址: https://debezium.io/blog/2023/06/21/debezium-2-3-final-released/
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
Debezium 2.3.0.Final Released
June 21, 2023 by Chris Cranford
releases mongodb mysql postgres sqlserver caassandra oracle db2 vitess outbox spanner
在过去的几个月里,团队一直在忙于准备一个压缩的Debezum2.3的释放时间表,我很高兴地宣布下一期的销售已经到了, 2.3.0.Final 现在可以使用了!
尽管有一个压缩释放时间表,这个版本充满了新的功能和改进。Debezum2.3包括一个全新的通知子系统、改写信号子系统以支持将信号发送到Debez连接器的附加手段、引入JDBC存储模块以维持关系数据库中的Debezum状态、对VIVESSARD处理进行并行化、后GRESQL连接器副本标识改进、为库贝内特斯建立一个全新的Debezum服务器操作器、支持精确的、曾用于后数据库的语义学SQL连接器和甲骨文连接器的改进。
让我们花点时间来谈谈任何突破性的改变和所有这些改进,以及它们为什么如此重要!
突破性变化
新的特点和改进
其他变动
下一步是什么
你也可以找到一个完整的变化列表。 释放说明 .
突破性变化
我们通常试图避免尽可能多地在小版本中打破更改,但不幸的是,有时这种改变是不可避免的,特别是如果某一特性可能是 实验的 .根据您是从预览版本升级的,还是从早期的稳定版本升级的,Debezum2.3引入了两个破坏性更改:
后置ql/mysql安全连接更改
JDBC存储编码更改
后置ql/mysql安全连接更改
可以将后GRESSL和mysql的德贝兹配置为使用安全的SSL连接。对于后置SQL,可以通过配置实现database.sslmode 对于mysql来说这可以用database.ssl.mode .
使用Debezum2.3,这个配置选项不再默认disable (后问题)或disabled (mysql)而不是默认prefer (后问题)和preferred (mysql)。这意味着,在尝试使用加密的安全连接连接时,除非另有配置,否则连接器在默认情况下将返回到使用无担保连接。
JDBC存储编码更改
2.3.0.阿尔法1介绍了新的 实验的 JDBC存储模块。这个存储模块默认使用UTF-16作为默认编码;然而,大多数数据库更喜欢使用UTF-8作为默认编码。如果您是从2.3.0.阿尔法1升级,2.3.0.Beta1,以及以后在使用JDBC存储模块存储数据时使用UTF-8,以与典型的数据库默认值保持一致。
新的特点和改进
德贝兹2.3包含了大量的新功能改进,其中包括:
库贝内特斯德贝兹特服务器操作员
新的通知子系统
新的可扩展信号子系统
Jmx信号和通知集成
新的JDBC存储模块
一旦交付后行流
重复标识更改
甲骨文RAC改进
库贝内特斯德贝兹特服务器操作员
这个版本介绍了 预演 版本的新德贝泽斯操作员,提供部署和管理德贝泽斯服务器实例的能力库贝内特斯。Debezum服务器允许您将更改事件从您的数据源流到各种各样的消息传递基础结构。我们的目标是为希望利用库伯内特斯进行可伸缩性和高可用性部署的德贝兹社区提供一个无卡夫卡的替代方案。
目前,文档很少,因为操作符处于早期孵化阶段;然而,我们确实打算在即将到来的发布周期中改进这一点。你能找到 部署实例 及其基本描述 定制资源规范 在GITUUB存储库中,您可以将其用作短期的引用。
我们目前不建议对这个组件进行生产部署;但是,我们鼓励用户提供社区反馈。反馈对于评估组件是否已准备就绪或是否仍有改进的领域来满足每个人的需求是有价值的。
新的通知子系统
Debezum2.3引入了一个全新的特性,叫做通知,它允许Debez铵释放任何外部系统可以消耗的事件,以了解Debez铵生命周期各个阶段的状态。
通知事件被表示为一系列键/值元组,其结构包含几个非框字段。下面是一个简单通知事件的例子。
示例通知事件
{
“id”: “c485ccc3-16ff-47cc-b4e8-b56a57c3bad2”,
“aggregate_type”: “Snapshot”,
“type”: “Started”,
“additional_data”: {
…
}
}
每个通知事件包括id 字段,一个UUID来识别通知,一个aggregate_type 通知所涉及的领域基于域驱动设计的概念,type 表示提供关于聚合类型本身的更多细节的字段,以及可选的additional_data 该字段由一个基于字符串的键/值对的地图组成,并附有关于事件的额外信息。
目前,有两种通知事件类型由Debezns支持:
初始快照的状况
监测递增快照
初始快照通知
初始快照是连接器首次启动时对现有数据的一致捕获。初始快照事件将有一个聚合类型,其值为:“Initial Snapshot” 事件的类型由三个逻辑值组成:
SKIPPED
表示跳过的初始快照。
ABORTED
表示终止的初始快照。
COMPLETED
表示已成功结束的初始快照。
以下是关于完成初始快照的通知示例:
已完成事件示例快照
{
“id”: “5563ae14-49f8-4579-9641-c1bbc2d76f99”,
“aggregate_type”: “Initial Snapshot”,
“type”: “COMPLETED”
}
增量快照通知
增量快照是在连接器正在进行主动流更改时从已配置的一组表中捕获现有数据。增量快照事件将具有具有"Incremental Snapshot" 这个类型将由几个逻辑值组成:
STARTED
表示已开始增量快照。
PAUSED
表示增量快照暂时暂停。
RESUMED
表示已暂停的增量快照现已恢复。
STOPPED
表示已停止增量快照。
IN_PROGRESS
表示正在进行增量快照。
TABLE_SCAN_COMPLETED
表示给定表的增量快照。
COMPLETED
指示所有表的增量快照。
配置通知
通过连接器的配置来配置德贝司通知。下面的例子展示了如何配置出框卡夫卡主题或基于日志的通道。
使用卡夫卡主题
{
“notification.enable.channels”: “sink”,
“notification.sink.topic.name”: “debezium_notifications”,
…
}
使用连接器日志
{
“notification.enable.channels”: “log”
}
新的可扩展信号子系统
自从引入增量快照特性以来,DEBeZUS支持信号的概念。信号非常重要,因为它允许您提供元数据来指示Debezns执行给定的任务,无论该任务是要编写连接器日志的条目,还是执行临时的增量快照。
在德贝兹2.3中,对信号子系统进行了改造,以引入 通道 ,代表一种介质,用来监视或监听信号并对其作出反应。在以前的版本中,有一个跨连接器普遍支持的通道,这就是数据库信号表。在本版本中,这些渠道已经统一,以下渠道可以从盒子中获得:
数据库信号表
卡夫卡信号话题
文件系统
Jmx
但这并不是全部,信号通道契约是可扩展的,允许您编写自定义实现,并轻松地将其提供给连接器。
信号和通知整合
德贝兹2.3以前引入了一个新的信号通道和通知功能。这个功能允许外部应用程序容易地与Debezum集成,发送信号来执行各种任务,例如临时的增量快照,并接收关于这些任务进展的通知。这个版本在此功能的基础上进行构建,以允许通过JMDA发送信号和接收通知的能力。
发出信号
在这个版本中,信号信道子系统得到了改进,以支持通过jmx发送信号。来自jconsole 窗口,您现在可以看到连接器有两个新的子部分,通知和信号部分如下所示:
图片来自官网原文
JCOSP指标
新的signals 节允许您调用一个操作上的jmx豆,以便传输信号到Debezns。这个信号类似于逻辑信号表结构,它接受3个参数、一个唯一的标识符、信号类型,最后是信号有效载荷。下表说明了这是从jconsole :
图片来自官网原文
发射信号
接收通知书
新的notifications 部分允许您接收并响应JMDABean从Debezum捕获的通知。DEBeZMIMNY将缓冲所有通知,以确保没有遗漏通知。下表说明了这是从jconsole :
图片来自官网原文
接收通知
JMDABean不会自动清除通知队列。为了避免内存问题,一定要调用reset 一旦处理完所有通知,通知书中的方法就会出现。
我们期待您的反馈,这一新的方式集成信号和通知与Debezum在JMDA上。
新的JDBC存储子系统
Debezum2.3介绍了一个新的存储模块实现,支持通过JDBC在数据存储中持续架构历史和偏移数据。对于您可能无法方便地访问持久性文件系统的环境,这提供了另一种通过远程持久性存储平台进行存储的选择。
为了利用这个新模块,必须在项目或应用程序中添加以下依赖项:
马文坐标
io.debezium
debezium-storage-jdbc
2.3.0.Final
下面的例子说明如何通过JDBC存储模块配置偏移或架构历史存储:
偏移JDBC存储的配置示例
{
“offset.storage.jdbc.url”: “”,
“offset.storage.jdbc.user”: “dbuser”,
“offset.storage.jdbc.password”: “secret”,
“offset.storage.jdbc.offset_table_name”: “debezium_offset_storage”
}
架构历史JDBC存储的配置示例
{
“schema.history.internal.jdbc.url”: “”,
“schema.history.internal.jdbc.user”: “dbuser”,
“schema.history.internal.jdbc.password”: “secret”,
“schema.history.internal.jdbc.schema.history.table.name”: “debezium_database_history”
}
一旦交付后行流
重氮传统上一直是一个一旦交付的解决方案,保证不会错过任何变化。确切地说,这是阿帕奇卡夫卡社区提出的一项提案,作为阿帕奇卡夫卡社区的一部分。 KIP-618 .该建议旨在解决生产者(源连接器)的一个共同问题,即生产者重试时,它可能会将一批事件重新发送给卡夫卡经纪人,即使该批已由经纪人提交。这意味着在某些情况下,可能会发送重复事件,而并非每个消费者(接收器连接器)都能够很容易地处理此类情况。
Debezum计划以一种分阶段的方式展开一次性的传递语义。在快照和流的周围有一些特殊的角角案例,这些案例可能因连接器而异。在此基础上,Debezum2.3首先专门为后SQL添加了非常简单的语义支持。 流动阶段 只是!
为了充分利用这一优势,一旦交付,就不需要对连接器配置进行更改;但是,需要对您的卡夫卡连接工作人员配置进行调整,以启用此功能。你可以在 KIP-618 .
如果您将连接器混合在同一个连接集群上,这样做和不支持一次交付,您将无法设置exactly.once.support 在工人配置中required 因为这将导致不支持此功能的连接器在启动时失败验证。
重复标识更改
Debezum2.3介绍了一个新的后GRESQL连接器特性,称为"自动复制身份"。
复制标识是后格来格sql对插入、更新和删除的数据库事务日志中捕获的列的识别方法。这个新功能允许通过连接器配置配置表的副本标识,并在启动时将设置此配置的责任下放给连接器。
新的配置选项,replica.identity.autoset.values ,指定以逗号分隔的表和副本标识元组列表。如果表已经有一个给定的副本标识,则将覆盖该标识以匹配如果表被包含的话在此配置中指定的内容。后格SQL支持几个副本标识类型,有关这些类型的更多信息可在 文件 .
在指定replica.identity.autoset.values ,该值是一个逗号分隔的值列表,每个元素都使用: .下面是一个例子,其中两个表被配置为具有完整的副本标识:
{
“replica.identity.autoset.values”: “public.table1:FULL,public.table2:FULL”
}
甲骨文RAC改进
连接到甲骨文RAC安装时,必须指定rac.nodes 配置属性,具有集群中所有单个节点的最小主机地址或IP地址。旧版本的连接器也支持不同的格式,允许为每个节点包含一个端口,因为集群上的每个节点可能使用同一端口。
Debezum2.3改进了甲骨文RAC支持,还承认每个节点不一定使用相同的甲骨文站点标识符(SID),因此,现在也可以将SID包含在rac.nodes 配置财产以支持此类安装。
下面的例子说明了连接到两个甲骨文RAC节点,每个节点使用不同的端口和SID参数:
配置示例
{
“connector.class”: “io.debezium.connector.oracle.OracleConnector”,
“rac.nodes”: “host1.domain.com:1521/ORCLSID1,host2.domain.com:1522/ORCLSID2”,
…
}
其他补救措施
在这个版本中出现了相当多的缺陷和稳定性变化,值得注意的是:
德贝齐斯服务器停止向谷歌云酒吧/子服务器发送事件 DBZ-5175
烤变字符数组和日期数组没有正确处理 DBZ-6122
升级至英菲尼斯潘14.0.11.最后,以修复CE-2022-45047 DBZ-6193
引入物流者查询过滤模式 DBZ-6254
在部署多个连接器时锁定日志中的争用点 DBZ-6256
确保连接器可以从陈旧的时间戳开始到过去的一个多小时。 DBZ-6307
甲骨文更改事件源信息块中的rs_id字段为空 DBZ-6329
向http客户端添加JRT身份验证 DBZ-6348
使用后进10不支持的项目。 DBZ-6353
记录,记录,处理,保留。小时应参照最后偏移,而不是合并。 DBZ-6355
流碎片列表支持多个任务 DBZ-6365
改进SKIPP的代码。 DBZ-6366
动力学汇----无线服务证书提供商 DBZ-6372
没有正确地处理烤的养狗店 DBZ-6379
无法解析用于表分区的甲骨文DDL缩小空间 DBZ-6386
为SQL服务器设置未来的操作日期 DBZ-6388
由于复制槽处于活动状态,连接器任务无法恢复流处理 DBZ-6396
基于数据库的数据没有正确地保持没有时差的日期和时间值。 DBZ-6399
蒙戈德连接器崩溃在无效简历令牌上 DBZ-6402
快照第五步-捕获桌的阅读结构太长 DBZ-6439
启动只读mysql连接器 DBZ-6440
使用多租赁时,甲骨文并行快照没有适当设置PDB上下文 DBZ-6457
[Mariadb]添加对用户统计插件关键词的支持 DBZ-6459
从谷歌BUB/子错误中无法恢复德贝齐斯服务器 DBZ-6461
“忽略提供的无效任务” DBZ-6463
清单应以文档中的数据库名称为前缀。 DBZ-6474
在通知发送时,DB2连接器可能与NPE发生故障 DBZ-6485
新记录状态SMT与头值SMT相结合会导致意外的字段名称异常 DBZ-6486
当队列内存大小限制到位时,大小数失败 DBZ-6490
允许在德贝兹汇连接器配置中指定架构 DBZ-6491
甲骨文表无法捕获,无法获得运行时间。 DBZ-6492
信号轮询间隔具有错误的默认值 DBZ-6496
甲骨文JDBC驱动器23.X投出ORA-18716-没有在任何时差 DBZ-6502
阿尔卑斯公园图片应明确使用LLVM/LLang15 DBZ-6506
文件信号通道没有加载 DBZ-6509
利用事件。处理。失败。处理。活复制连接模式 DBZ-6510
Mysqledonludly弹换用事件源在初始化期间强制执行卡夫卡依赖性 DBZ-6511
德贝兹增量快照块大小文档不清楚或错误 DBZ-6512
在转换日之间负秒的错误值 DBZ-6513
德贝兹增量快照块大小文档不清楚或错误 DBZ-6515
对某些错误只使用错误处理方式 DBZ-6523
[后GRESQLTERY]数据没有被流捕获 DBZ-6524
甲骨文连接器:特定组合的快照失败 DBZ-6528
在分组路由中使用更好的散列功能 DBZ-6529
快照上的表顺序不正确 DBZ-6533
开始为德贝兹姆操作员发布夜间图像 DBZ-6541
开始为德贝司操作员发布图像 DBZ-6542
部分路由中未处理的未处理的未接收将使整个连接插件崩溃 DBZ-6543
现场有虫。名称。调整。模式财产 DBZ-6559
运算符设置不正确的转换值。 DBZ-6560
将mysqJDBC驱动程序升级到8.0.33 DBZ-6563
将谷歌云BOM升级到26.17.0 DBZ-6570
由于K8的启动,库伯特-康菲扩展会干扰SSL测试 DBZ-6574
与卡夫卡信号的只读连接器在启动时失败 DBZ-6579
雷迪斯架构历史可能在启动时失败 DBZ-6580
一起来, 138期 已经做好了准备。非常感谢所有参与这个版本的社区的贡献者: 安德烈 , 安格舒曼·戴伊 , 阿尼尔·达萨里 , 阿尼莎 , 伯特兰·帕奎特 , 鲍勃·罗丹 , 布雷诺·莫雷拉 , 克兰福德 , 基督教雅各孟西 , 大卫贝克 , 弗雷德里克·洛朗 , 公长华 , , 乌马基神童 , 侯赛因·安萨里 , 因德拉舒克拉 , 伊斯梅尔·辛塞克 , 杰克布切切克 , 杰西·埃伦兹韦格 , 伊里·帕坎奇c , 约翰·沙兰达 , 坎提萨布拉曼尼亚人 , 卡特琳娜·加里耶娃 , 马里奥菲奥尔维塔莱 , 马丁·梅戴克 , 米格尔·安赫尔·索托马约尔 , 徐南希 , 尼尔利维 , 翁德雷杰巴贝克 , 奥伦伊利亚 , Rj诺林 , 勒内·克纳 , 罗丹 , 罗纳克杰因 , 谢尔盖艾兹纳 , 张舒兰 , 斯蒂芬克拉克森 , 托马斯桑顿 , 汤米·卡尔松 , 托尼约瑟夫 , 沃伊泰克 ,以及 蔡灿材 !
接下来呢?
随着德贝兹2.3的退出,我们的主要重点将是协调对任何德贝兹2.3报告的修复,但主要是即将发布的新的德贝兹2.4预览版本。
德贝兹2.4计划进行大量的修改,我们打算用一个大桶的方式处理这些变化,每个桶被分配一个优先级。同任何时间表一样,优先次序可能会改变,但以下是预期情况的概要:
优先事项1
[核心]时间表b
[核心]时差单消息转换,以方便使用德贝兹时态类型
[核心]初步快照通知
[蒙戈数据库]全数据库更改流支持
多任务部署度量支持
[甲骨文]开放式适配器支持
[甲骨文]XML,长、粗和长的原始数据类型支持
[通用]对其他连接器的语义支持
[依赖]阿帕奇卡夫卡3.5.X支持
优先事项2
[操作员]德贝兹操作员的下一步
[核心]临时阻塞快照
[依赖性]使用机会
优先事项3
[嵌入式引擎]并行化支持
并行增量快照支持
[mysql]并行架构快照支持
这并不是一个详尽无遗的清单,也不是一个雄心勃勃的清单,但是考虑到德贝兹2.3的时间缩短了,我们希望德贝兹2.4的额外几个星期将使下一个小版本成为可能,所有这些功能和更多。路线图将于本周更新,以与上述的德贝齐姆2.4和未来的路线图保持一致,因此请务必与我们联系,了解 邮寄清单 或我们的 聊天 如果你有任何想法或建议。
否则的话,我希望随着我们北方人的夏天的到来,在接下来的几个月里,假期和应得的休假将是正常的。给那些旅行或打算为自己和家人花费一些时间,享受和安全的人!
直到下次…