原文地址: https://debezium.io/blog/2018/06/21/debezium-0-8-0-beta1-released/
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
Debezium 0.8.0.Beta1 发布
六月 21, 2018 作者: Gunnar Morling
发布 mysql postgres mongodb oracle docker
我非常兴奋地宣布 Debezium 0.8.0.Beta1发布!
此版本带来了许多令人兴奋的新功能以及错误修复,例如我们新的 Oracle 连接器的第一款、用于 MySQL 连接器的全新 DDL 解析器、对 MySQL 默认值的支持以及对 Apache Kafka 1.1 的更新。
由于大量更改(该版本总共包含42 个问题),我们决定稍微改变我们的版本控制架构:今后我们可能会在进行最终版本之前发布一个或多个 Beta 和 CR(“候选版本”)版本一。这将使我们能够尽早从社区获得反馈,同时仍然完成和完善特定功能。最终(稳定)版本将被命名为 0.8.0.Final 等。
如果没有我们杰出的社区,这个版本是不可能实现的;向以下为新版本做出贡献的开源爱好者致以深深的谢意:Echo Xu、Ivan Vucina、Listman Gamboa、Omar Al-Safi、Peter Goransson、Roman Kuchar(他们在新版本方面做了出色的工作) DDL 解析器实现!)、Sagar Rao、Saulius Valatka、Sairam Polavarapu、Stephen Powis和WenZe Hu。
非常感谢大家的帮助!
现在让我们仔细看看 Debezium 0.8.0.Beta1 中的一些新功能;与往常一样,您可以在更改日志中找到此版本的完整更改列表。请特别注意重大变更和升级说明。
基于 XStream 的 Oracle Connector(技术预览版)
长期以来,对 Debezium Oracle 连接器的支持一直是最需要的功能之一(其原始问题编号是DBZ-20!)。因此,我们非常高兴最终能够发布该连接器的第一个正在开发的版本。目前,该代码仍在不断发展中,因此应将其视为第一个技术预览。这意味着它的功能还不完整(最值得注意的是,尚不支持初始快照),发出的消息格式可能仍会发生变化等。因此,虽然我们还不建议在生产中使用它,但您绝对应该尝试一下报告您的经历。
Oracle 连接器面临的一项挑战是如何从数据库中获取实际的更改事件。与 MySQL 和 Postgres 不同的是,遗憾的是没有免费且易于使用的 API 可以让 Oracle 执行相同的操作。经过一番探索后,我们决定将连接器的第一个版本基于Oracle XStreamAPI。虽然这(有点)勾选了“易于使用”框,但它并没有这样做“免费使用”:使用此 API 需要您拥有 Oracle 单独的 GoldenGate 产品的许可证。我们完全意识到这并不理想,但我们决定仍将这条路线作为第一步,使我们能够获得一些使用 Oracle 的经验,并将连接器交到那些拥有所需许可证的人手中。展望未来,我们将探索替代方法。我们已经对此有了一些想法和讨论,所以请继续关注(要跟踪的问题是DBZ-137)。
Oracle 连接器将在下一个 0.8.x 版本中发展。要了解更多信息,请查看其连接器文档页面。
基于Antlr的MySQL DDL解析器
为了构建捕获的数据库结构的内部元模型,Debezium MySQL 连接器需要解析所有发出的 DDL 语句(CREATE TABLE等)。这过去是通过手写的 DDL 解析器来完成的,该解析器工作得相当好,但随着时间的推移,它也暴露了一些缺点;由于 DDL 语言相当广泛,我们多次看到由于某些特定 DDL 结构无法解析而导致的错误报告。
所以我们决定回到绘图板并提出一个全新的解析器设计。感谢 Roman Kuchar 的出色工作,我们现在有了一个全新的 DDL 解析器,它基于经过验证且非常成熟的Antlr解析器生成器(幸运的是,Antlr 项目提供了完整的 MySQL 语法)。因此,我们应该会看到更少的与 DDL 解析相关的问题报告。
目前,旧的解析器仍然存在,并且仍然是 Debezium 0.8.x 的默认解析器。我们非常鼓励您通过将连接器选项设置为 来测试新的实现ddl.parser.mode,antlr并报告您是否在这样做时遇到任何问题。我们计划在 0.8.x 版本中改进和完善 Antlr 解析器(具体来说,我们将测量其性能并根据需要进行优化),并从 Debezium 0.9 开始默认切换到它。最终,旧的解析器将在以后的版本中被删除。
MySQL 连接器的进一步更改
MySQL 连接器现在将列默认值传播到相应的 Kafka Connect 模式 ( DBZ-191 )。当使用 Avro 作为序列化格式和启用兼容性检查的架构注册表时,这非常有用。
通过将include.query连接器选项设置为 true,您可以将导致数据更改的原始查询添加到相应的 CDC 事件 ( DBZ-706 )。虽然默认情况下处于禁用状态,但此功能可以成为分析和解释 Debezium 捕获的数据更改的有用工具。
MySQL 连接器中的一些其他更改包括心跳主题名称 ( DBZ-668 ) 的可配置性、围绕TIMESTAMP( DBZ-578 ) 和DATETIME列 ( DBZ-741 ) 的时区处理的修复以及在没有显式比例值的情况下正确处理NUMERIC列 ( DBZ-第727章)
Postgres 连接器
Postgres 的 Debezium 连接器已修复大量错误,包括以下错误:
wal2json 现在可以处理大于 1Gb 的事务 ( DBZ-638 )
事务 ID 的处理方式与现在一致 ( DBZ-673 )
与时间列类型相关的多个修复(DBZ-681,DBZ-696)
OID 现在被正确处理为 unsigned int ( DBZ-697 , DBZ-701 )
MongoDB 连接器
此外,对于 MongoDB 连接器,还完成了许多小功能实现和错误修复:
针对 MongoDB 3.6 ( DBZ-529 )进行测试
现在可以使用提供的 SMT ( DBZ-561 ) 展平嵌套文档,这在将 MongoDB 的更改合并到关系数据库时非常有用
拆包SMT现在可以与Avro一起使用(DBZ-650)
展开 SMT 可以处理具有混合元素类型的数组 ( DBZ-649 )
当快照在完成之前中断时,连接器将在重新启动后重做快照(DBZ-712)
下一步是什么?
根据新的 Beta/CR/Final 发布方案,我们希望得到社区(即您:)对此 Beta 版本的一些反馈。根据报告的问题数量,我们将发布另一个 Beta 版或在下一个版本中使用 CR1。0.8.0.Final 版本将在几周内发布。请注意,Oracle 连接器在最终版本中仍将是“技术预览”组件。
之后,我们计划发布几个主要修复错误的 0.8.x 版本,同时 Debezium 0.9 的工作将同时开始。为此,我们计划开发一个用于 SQL Server 的连接器(请参阅DBZ-40)。我们还想探索基于原始事务 ID 从多个表的 CDC 流创建一致的联接具体化的方法。此外,还有将 Debezium 更改事件公开为反应性事件流 ( DBZ-566 )的想法和第一个原型,最终可能会发布。
请查看路线图以了解一些更长期的想法,如果您对此有任何想法,请与我们联系。