我很高兴能和大家分享Debezium开云体育官方注册网址2.0.0.Beta1已经发布了!
这个版本包含了几个新特性,包括一个可插拔的主题选择器,包含了提交Oracle更改事件的数据库用户,以及改进了将表唯一索引作为主键的处理。开云体育电动老虎机此外,还有一些突破性的更改,例如将多分区模式移动为默认模式以及引入开云体育官方注册网址debezium-storage
模块及其实现。所以让我们来仔细看看所有这些细节。
多分区模式现在默认
许多数据库开云体育电动老虎机平台支持开箱即用的多租户,这意味着您可以只安装一个数据库引擎,而拥有许多独特的数据库。在SQL Server这样的情况下,传统上需要为每个唯一的数据库部署单独的连接器。开云体育电动老虎机在过去的一年里,人们做了大量的工作来打破这个障碍,并引入了一种通用的方式,任何单个连接器部署都可以连接和传输来自多个数据库的更改。开云体育电动老虎机
第一个值得注意的变化是SQL Server连接器的配置选项,开云体育电动老虎机database.dbname
.该选项已被一个名为开云体育电动老虎机database.names
.由于多分区模式现在是默认的,这是新的开云体育电动老虎机database.names
选项可以使用逗号分隔的数据库名称列表指定,如下所示:开云体育电动老虎机
开云体育电动老虎机database.names = TEST1, TEST2
在本例中,将连接器配置为从同一主机安装上的两个惟一数据库捕获更改。开云体育电动老虎机连接器将在Kafka Connect中启动两个独特的任务,每个任务将同时负责来自各自数据库的流更改。开云体育电动老虎机
第二个值得注意的变化是连接器指标命名。连接器通过使用唯一名称标识的bean公开JMX指标。多分区模式是多个任务的默认模式,每个任务都需要自己的指标bean,因此有必要更改命名策略。
以SQL Server为例,在旧版本的De开云体育官方注册网址bezium中,指标可以使用以下命名策略:
开云体育官方注册网址debezium.sql_server: type = connector-metrics, server = < sqlserver.server.name >,上下文= > <上下文
在这个版本中,命名策略现在包括一个新的任务
JMX MBean名称中的组件:
开云体育官方注册网址debezium.sql_server: type = connector-metrics, server = < sqlserver.server.name >,任务= < task.id >,上下文= > <上下文
请检查您的指标配置,因为命名更改可能会对收集Debezium指标产生影响。开云体育官方注册网址
开云体育官方注册网址Debezium存储模块
在这个版本中,我们引入了一个新的开云体育官方注册网址debezium-storage
基于文件和kafka的数据库历史记录和偏移存储的工件集。开云体育电动老虎机这是未来支持Amazon S3、Redis和可能的JDBC等平台的几个实现中的第一个更改。
对于通过插件构件安装连接器的用户来说,这应该是一个无缝的改变,因为所有的依赖都捆绑在那些插件可下载存档中。对于可能在其应用程序中嵌入Debezium或可能开云体育官方注册网址正在构建自己的连接器的用户,请注意您可能需要根据所使用的存储实现添加新的存储依赖项。
可插入的主题选择器
开云体育官方注册网址Debezium的默认主题命名策略向已命名的主题发出更改事件开云体育电动老虎机database.schema.table
.如果您需要以不同的方式命名主题,通常会将SMT添加到连接器配置中以调整这种行为。但是,如果这个主题名称的一个组件(可能是数据库或表名)包含点(开云体育电动老虎机.
),也许SMT没有足够的上下文。
在这个版本中,一个新的TopicNamingStrategy
引入的目的是允许在Debezium内部完全自定义这种行为。开云体育官方注册网址缺省命名策略实现在大多数情况下应该足够了,但如果您发现它不能满足要求,则可以提供自定义的命名策略实现TopicNamingStrategy
契约以完全控制连接器使用的各种命名。要提供自己的自定义策略,可以指定topic.naming.strategy
Connector选项,使用策略的全限定类名,如下所示:
topic.naming.strategy = org.myorganization.MyCustomTopicNamingStrategy
这种自定义策略不仅限于控制表映射的主题名称,还可以控制模式更改、事务元数据和心跳。您可以参考DefaultTopicNamingStrategy
发现在这里举个例子。这个功能仍在孵化中,我们会在收到反馈后继续改进和开发它。
Oracle在变更事件中提交用户
变更事件的源信息块携带了关于变更事件起源的各种上下文。在这个版本中,Oracle连接器现在在捕获的更改事件中包含了进行数据库更改的用户。开云体育电动老虎机一个新的领域,user_name
,现在可以在源信息块中找到这个新信息。该字段是可选的,仅在使用基于logminer的实现触发更改时可用。该字段还可以包含值未知的
如果在连接器捕获变更之前删除了与变更关联的用户。
改进了表唯一索引处理
Debezium连接器捕获的表不一定要有主键。开云体育官方注册网址在没有定义主键的情况下,Debezium将检查表的唯一索引,以确定是否可以进行合理的键替换开云体育官方注册网址。在某些情况下,索引可以引用列,例如CTID
PostgreSQL或ROWID
在Oracle。这些列既不可见也不用户定义,而是由数据库自动生成的隐藏合成列。开云体育电动老虎机此外,索引还可以使用数据库函数来转换存储的列值,例如开云体育电动老虎机上
或较低的
为例。
在此版本中,依赖于隐藏的、自动生成的列或包装在数据库函数中的列的索引不再有资格作为主键替代品。开云体育电动老虎机这保证了当依赖索引作为主键而不是定义的主键本身时,生成的消息的主键值元组直接映射到数据库用来表示惟一性的相同值。开云体育电动老虎机
其他修复和改进
在这个版本中有几个bug修复和稳定性的变化,一些值得注意的是:
MongoConnector的字段排除配置不适用于名称相同但来自不同集合的字段dbz - 4846
删除上次事件的冗余设置dbz - 5047
重命名
docker-images
存储库和JIRA组件container-images
dbz - 5048从Debe开云体育官方注册网址zium服务器消费者读取Debezium指标dbz - 5235
DBZ连接器的Filter步骤上用户输入不一致dbz - 5246
Kafka开云体育电动老虎机DatabaseHistory不检查数据库历史主题创建结果导致未知topicorpartitionexceptiondbz - 5249
将带有“Broken pipe (Write failed)”异常消息的SQLServerException作为可检索异常处理dbz - 5292
修改主键后,源和接收器之间的Lob类型数据不一致dbz - 5295
原因:java.io.EOFException:从位置2005308603读取下一个字节失败dbz - 5333
增量快照:Oracle表名解析不支持数据库名称中的句点dbz - 5336
支持使用模式前缀调用PostgreSQL默认值函数dbz - 5340
无符号tinyint转换MySQL 8.x失败dbz - 5343
当对捕获的表检测到不支持的LogMiner操作时,记录一个警告dbz - 5351
当基于系统和非系统生成列的唯一索引时抛出NullPointerExceptiondbz - 5356
MySQL连接器列哈希v2不工作dbz - 5366
当嵌套数组不包含元素时,发件箱JSON扩展失败dbz - 5367
Mac Apple M1需要升级docker-maven-plugindbz - 5369
AWS DocumentDB(与MongoDB兼容)连接失败dbz - 5371
Oracle Xstream不会将提交时间戳传播到事务元数据中dbz - 5373
UI查看非第一个集群中的连接器配置返回404dbz - 5378
CommitScn未按预期格式登录dbz - 5381
psqlexception: timestamp/date/time类型的错误值:CURRENT_TIMESTAMPdbz - 5384
在kafka历史主题中解析重命名语句时缺少“previousId”属性dbz - 5386
检查约束在模式更改事件中引入基于约束的列。dbz - 5390
支持在关系模型和JSON模式历史主题中存储扩展属性dbz - 5396
列被引用为PRIMARY KEY,但是表中没有定义匹配的列dbz - 5398
当使用支持可插拔数据库的Or开云体育电动老虎机acle时,明确signal.data.collection使用的数据库名称dbz - 5399
时间戳与时区列的默认值不是GMTdbz - 5403
升级到Kafka 3.1破坏了与Kafka 2的构建兼容性。x和Kafka 3.0dbz - 5404
从mysql连接器中删除重复的SimpleDdlParserListenerdbz - 5425
总共,总共59岁的问题修复了此版本。
非常感谢社区中为这个版本工作的所有贡献者:安德鲁·沃克,莫汉蒂Anisha,鲍勃Roldan称,克里斯克兰福德,Giljae Joo,哈维曰,蔡洪平(Henry Cai),侯赛因Torabi,伊斯梅尔•西姆西可,1月延迟性肌肉酸痛,雅罗西克Pechanec,马丁Medek,内森Smit,Paweł马龙,鹏威斗,谢尔盖·莫洛佐夫,Vojtech Juranek,Zhongqiang龚!
接下来是什么?
在过去的几个月里,团队在Debezium 2.0上取得了一些令人难以置信的进展,我们可以开始看到远处的终点线了。开云体育官方注册网址这在很大程度上是由于社区所做的不断增长的工作,贡献了变化,提供了反馈,并测试和帮助使新功能稳定。但是我们还没有完成,所以您可以继续期待下一个2.0.0。Beta2将在大约3周内发布,保持我们通常的节奏。
此外,我们会继续将改动后移植到1.9分支,并可能会考虑1.9.6。在我们完成Debezium 2.0.0.Final之前,最终版本将在8月份发布。开云体育官方注册网址
所以保持冷静,安全,快乐的捕捉!
关于Debe开云体育官方注册网址zium
开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源下Apache许可证,版本2.0.
参与
我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium,在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题.