Debezium发布历史123
原文地址: https://debezium.io/blog/2022/06/02/debezium-1-9-3-final-released/
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
Debezium 1.9.3.Final Released
June 2, 2022 by Chris Cranford
releases mongodb mysql postgres sqlserver cassandra oracle db2 vitess outbox
当夏天临近的时候,我很兴奋地宣布 1.9.3.Final !
这个版本主要关注的是缺陷修复和稳定性;不过,也有一些显著的特性增强。让我们花点时间冷静一下,然后"潜到"这些新的功能中去,在一些细节上:)。
使用蒙戈分贝和外发箱对二进制有效载荷进行解码
数据库从一开始就支持存储二进制数据,应用程序更喜欢使用数据库来存储二进制数据的原因有很多。二进制数据不一定总是像图像、缩略图或者像pdf这样的二进制文档那样的信息,它也可以包括序列化的对象。
当使用蒙戈德和avro序列化的外发箱模式时,外发箱的有效载荷字段是唯一在消息值中发出的值。当有效载荷由二进制数据组成时,如下所示,它按原样发出,并可能导致与主题的消费者产生一些序列化问题。
{
“payload”: {
“
b
i
n
a
r
y
"
:
"
"
R
G
V
i
Z
X
p
p
d
W
0
g
a
X
M
g
d
G
h
l
I
G
J
l
c
3
Q
u
"
,
"
binary": ""RGViZXppdW0gaXMgdGhlIGJlc3Qu", "
binary":""RGViZXppdW0gaXMgdGhlIGJlc3Qu","type”: “0”
}
}
在这个版本中,我们反对ByteBufferConverter 我们还引进了两种新的转换器:
ByteArrayConverter *转换即将交付的有效载荷,abyte[] .
BinaryDataConverter *将交付的有效载荷转换为ByteBuffer 或Byte[] .
对于这个用例,我们将利用新的ByteArrayConverter 因为我们想把这个有效载荷的值作为原始的byte[] .在连接器配置中,value.converter 必须设置配置选项来处理这个用例。
transforms=outbox,…
transforms.outbox.type=io.debezium.connector.monogdb.transforms.outbox.MongoEventRouter
value.converter=io.debezium.converters.ByteArrayConverter
现在,这些数据将会被发送到当前的代理,就像一个可以被消费者安全地使用的字节排列一样。感谢内森布拉德肖的出色贡献!
与甲骨文的心跳动作查询
心跳动作查询是一个特性,它允许Debezum连接器将记录写入源数据库,并在事件处理循环期间捕获这些记录。这首先是为后GERGSQL引入的,用于处理捕获表变化的频率低于其他非捕获表的情况,从而导致非预期的Wal增长。
对于使用日志程序实现的甲骨文,也会出现一个类似的问题,影响连接器的重新启动能力,原因是由于对其他未捕获的表所做的更改(无论它们是同一可插入数据库的一部分还是另一个表)而导致偏移SCN在正常间隔上没有得到推进。
要启用心跳动作查询,连接器必须配置:
heartbeat.interval.ms=1000
heartbeat.action.query=INSERT INTO heartbeat (id) values (SYSDATE)
table.include.list=MYSCHEMA.HEARTBEAT,…
必须首先通过指定heartbeat.interval.ms .这控制连接器产生心跳事件的频率。如果这个值不高0 心跳停止。
接下来,要特别使用动作查询功能,heartbeat.action.query 必须作出选择。这指定了一个将在每个心跳间隔上执行的SQL语句。这种说法可以是INSERT 或者UPDATE ,只要产生的SQL操作产生行更改。
最后,操作查询必须操作在连接器过滤器配置中的表上。与任何其他捕获的表一样,表还必须配置正确的补充日志记录,以便捕获事件。
有了这个配置,假设没有长时间运行的事务,偏移SCN将在每个心跳上前进。
甲骨文物流公司会议持续时间现在是可控的
甲骨文连接器的日志运行时间一直是根据重做日志开关的频率来确定的。一般而言,这种行为在大多数环境中运行良好;但是,在低流量环境或非高峰时间,这有可能在较长的时间内重复使用相同的日志程序会话,从而在PGA内存耗尽时导致ORA-04030异常。
增加了一个新的配置选项,log.mining.session.max.ms ,允许充分控制甲骨文记录师会议的最长持续时间。当被设定为更大的价值时0 ,连接器将自动关闭并重新启动挖掘会话,如果达到最大持续时间或发生日志开关,以先到者为准。在启用这个新选项时,低容量的甲骨文环境,特别是在非高峰时间,不应该再注意到任何PGA内存问题。与数据库管理员团队协调,根据环境的配置和活动确定最佳值。
进一步变化
但这并不是全部,还有一些值得注意的缺陷,包括但不限于:
Mysql连接器增量快照失败的分析数据时柱透镜时,连接器设置"快照"。 DBZ-4939
已经存在的例子:蒙戈布连接器度量注册期间的例外 DBZ-5011
日期-时间-例外:无法在波斯特格雷斯连接器中解析文本"无限" DBZ-5014
每个连接器有4个连接器 DBZ-5074
甲骨文记录器:从快照到流模式的转换过程中遗漏的记录 DBZ-5085
不能设置德贝齐姆。下沉。卡夫卡。生产者。SSL。端点。识别。算法到空值 DBZ-5105
SQL服务器连接器没有报告毫米后源 DBZ-5137
用列的默认值替换空值 DBZ-5166
甲骨文连接器度量跟踪回滚和废弃事务可能导致高内存使用率 DBZ-5179
我们强烈建议升级到1.9.3最后,以获得性能和稳定性方面的最新改进。
总体而言, 47个问题 就在这个版本里。请参阅 释放说明 了解更多关于所有固定错误、更新过程等的信息.
非常感谢社区中为德贝佐姆1.9.3.最后做出贡献的下列个人: 阿列克谢米罗什尼科夫 , 阿尼莎 , 鲍勃·罗丹 , 克兰福德 , 康纳·司切帕尼亚克 , 塞萨尔·马丁内斯 , , 西曼苏米什拉 , 杰克布切切克 , 伊里·帕坎奇c , 马克·阿拉森 , 马克贝雷兹尼斯基 , 内森布拉德肖 , 谢尔盖·莫罗佐夫 , 斯特凡·米科洛维奇 , 拉马嫩卡 ,以及 沃伊泰克 !
展望
德贝佐姆1.9发布流将在未来三个月保持当前的长期运行版本。在此期间,我们将继续评估用户报告,并根据严重程度进行微释放,以解决错误和回归。
另外,在Debezum2.0上也做了很多工作。我们打算在下周释放代贝唑2.0.0.阿尔法2,此后大约每三个星期释放一次。
在接下来的几周里,请继续关注,保持冷静!
原文地址: https://debezium.io/blog/2022/06/09/debezium-2.0-alpha2-released/
Debezium 2.0.0.Alpha2 Released
June 9, 2022 by Chris Cranford
releases mysql postgres sqlserver cassandra oracle db2 vitess outbox
我很高兴能和你分享 2.0.0.Alpha2 已经被释放了!
整个版本都是大量的修复和改进, 110期 全部解决。只是,哇!
一些值得注意的变化包括增量快照获得正则表达式的支持和一个新的停止信号。我们还做了一些内部管理,并删除了一些不受欢迎的配置选项和遗留的蒙戈数据库OPOG实现。
让我们仔细看看这些。
增量快照变化
首先,增量快照获得了巨大的成功。我们从社区获得的反馈对于这个过程如何工作以及它如何帮助简化捕捉更改的过程非常积极,特别是对于拥有非常大数据集的用户。因此,我们在这一版本中抓住机会,在这一势头的基础上,提出了若干新的选择:
停止正在进行中的快照的能力
支持使用正则表达式
停止增量快照
自从我们首次引入增量快照以来,用户已经要求一种方法来停止正在进行中的快照。为此,我们增加了一个新信号,stop-snapshot ,它允许停止一个正在进行的增量快照。此信号与其他信号一样,通过插入一个行到信号表/集合中发送,如下所示:
INSERT INTO schema.signal_table (id, type,data)
VALUES (‘unique-id’, ‘stop-snapshot’, '`);
…stop-snapshot 它的有效载荷看起来和execute-snapshot 对手。一个例子:
{
“data-collections”: [“schema1.table1”, “schema2.table2”],
“type”: “incremental”
}
这个例子可以删除两个schema1.table1 和schema2.table2 从增量快照来看,只要表或集合尚未完成其增量快照。如果其他表格或收集的款项在删除data-collections ,增量快照将继续处理那些尚未处理的问题。如果没有其他表或集合,则增量快照将停止。
另一个例子stop-snapshot 有效载荷很简单:
{
“type”: “incremental”
}
此示例未指明data-collections 属性,它是可选的stop-snapshot 信号。当这个属性没有指定时,信号暗示应该完全停止当前正在进行的增量快照。这提供了在不了解当前或未完成的表或集合的情况下停止增量快照的能力。
信号支持正则表达式
递增快照信号要求在data-collections 有效负载属性。虽然这样做效果很好,但在某些情况下,广义捕获配置可以利用正则表达式的使用。我们已经在连接器配置选项中支持正则表达式,例如包含/排除列表,因此将其扩展到增量快照也是有意义的。
从Debezum2.0开始,所有增量快照信号都可以在data-collections 有效载荷属性。使用上面的一个停止信号示例,有效载荷可以用正则表达式改写:
{
“data-collections”: [“schema[1|2].table[1|2]”],
“type”: “incremental”
}
就像显式用法一样,这个带正则表达式的信号也会阻止两个schema1.table1 和schema2.table2 .
拆除蒙戈分贝支承
在Debezum1.8中,我们引入了新的蒙戈数据库变化流特性,同时也反对OPOG实现。向更改流的过渡提供了各种好处,例如能够从非主要节点流出更改,能够发布为下游消费者提供完整文档表示的更新事件,等等。简而言之,更改流只是一种更优越的方式来执行与MOGODB的更改数据捕获。
删除OPOG实现还意味着不再支持蒙戈布3.x。如果您使用的是蒙戈德3.x,您将需要至少升级到蒙戈德4.0,或以后使用Debezum2.0。
配置选项
德贝兹1.x多年来经历了许多进化。我们添加了针对连接点的选项,以处理迁移或特定特性,这些特性已被否决,甚至被通用的选项所取代,这些选项对所有连接点都是通用的。Debezum2.0的主要任务之一是对配置选项做一些内部管理,因为许多配置选项已被否决。
这样,当我们查看选项命名空间时,未来还会有更多的配置管理。可以说,作为升级路径的一部分,用当前的连接器配置审查连接器的相关选项文档非常重要。您可能会发现,您可以用较少的选项简化配置,或者某些选项名称已经完全改变。
其他修复和改进
在这个版本中有几个缺陷和稳定性变化,值得注意的是:
现有出版物未按新表更新 DBZ-3921
Mysql连接器增量快照失败的分析数据时列长度时,连接器设置为"快照"。 DBZ-4939
日期-时间-例外:无法在波斯特格雷斯连接器中解析文本"无限" DBZ-5014
生成的模式缺少默认值 DBZ-5038
所有连接器现在都使用多分区代码 DBZ-5042
甲骨文记录器:从快照到流模式的转换过程中遗漏的记录 DBZ-5085
引入一个新的字段"TS_MS"来识别模式更改事件的过程时间 DBZ-5098
分析零日失败 DBZ-5099
总之,一个惊人的 110期 已经做好了准备。
感谢所有参与这个版本的贡献者:罗特姆·阿杜, 阿列克谢米罗什尼科夫 , 安德鲁·沃克 , 阿尼莎 , 鲍勃·罗丹 , 克兰福德 , 克里斯·李 , 康纳·司切帕尼亚克 , 塞萨尔·马丁内斯 , 伊莱兰·阿格拉诺维奇 , 祖伊森 , 贡纳·莫林 , , 西曼苏米什拉 , 杰克布切切克 , , 伊日诺沃特尼 , 伊里·帕坎奇c , 马克·阿拉森 , 马克贝雷兹尼斯基 , 马丁·梅戴克 , 内森布拉德肖 , 萨加拉奥 , 谢尔盖·莫罗佐夫 , 石超安 , 斯特凡·米科洛维奇 , 蒂莫罗耶 , 拉马嫩卡 , 沃伊泰克 ,以及 阳的 !
接下来呢?
因此,虽然这个版本有点落后于时间表,但Debezum2.0的设计相当不错。
接下来的主要里程碑包括跨连接器的统一快照模式,一种新的Snapshotter 适用于所有连接器,可压缩的JSON数据库历史,偏移统一,偏移存储API等等。因此,随着我们继续研究德贝齐姆2.0,未来几周确实有很多工作要做。和往常一样,你可以在大约3个星期内期待其中的一些(希望全部),坚持我们通常的释放节奏。
在此之前,让数据捕获继续进行!