上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Debezium发布历史57

guduadmin01小时前

原文地址: https://debezium.io/blog/2019/05/29/debezium-0-10-0-alpha1-released/

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Debezium 0.10.0.Alpha1“春季清理”版本发布

五月 29, 2019 作者: Gunnar Morling

发布 mysql postgres mongodb sqlserver oracle docker

我很高兴地宣布 Debezium 0.10.0.Alpha1发布!

Debezium 0.10 的主要主题将是进行一些清理(这就是您每年这个时候所做的事情,对吧?);我们计划删除一些已弃用的功能,并简化不同 Debezium 连接器生成的 CDC 事件结构中的一些细节。

这意味着与早期升级相比,从早期版本升级到 Debezium 0.10 可能需要更多的规划和考虑,具体取决于您对 0.9 及之前版本中已标记为弃用的功能和选项的使用情况。但不用担心,我们将在这篇博文和发行说明中详细描述所有更改。

为什么?

首先,我们来讨论一下为什么要做这些改变。

在过去三年中,Debezium 已从仅支持单个数据库发展成为适用于一系列不同关系数据库和 MongoDB 的整个CDC 连接器系列,以及随附的组件,例如用于主题路由的消息转换或实现发件箱模式。

与任何成熟的项目一样,随着时间的推移,我们认为代码库中的一些事情应该与我们最初的想法不同。例如,我们从用于处理 MySQL DDL 语句的手写解析器转变为基于 Antlr 的更强大的实现。此外,我们意识到某些时间列类型的导出方式在某些情况下存在值溢出的风险,因此我们添加了一种不易出现这些问题的新模式。作为最后一个示例,我们使快照期间使用的批量大小等选项在不同连接器之间保持一致。

幸运的是,Debezium 很快就获得了关注,尽管版本号为 0.x,但它在大量组织的生产中大量使用,并且用户依赖其稳定性。所以我们每次做这样的改变,都是为了让升级体验尽可能的流畅;通常这意味着以前的行为仍然可用,但在文档中被标记为已弃用,同时添加了新的改进选项、实现等并将其设为默认行为。

同时我们意识到连接器之间存在一些实际上不应该存在的差异。具体来说,source更改事件块存在一些差异,这使得消费者的统一处理比应有的更加复杂;例如,时间戳字段在 MySQL 事件中被命名为“ts_sec”,但在 Postgres 中被命名为“ts_usec”。

考虑到这一切,我们决定是时候解决这些问题了。这样做有几个目的:

通过删除遗留代码(例如不推荐使用的选项及其处理以及遗留的 MySQL DDL 解析器),保持代码库的可维护性和开放性,以供未来开发

source通过尽可能统一不同连接器创建的块,使来自不同连接器的 CDC 事件更容易使用

准备项目进入 1.0 版本,并承诺比现在更强有力地保留向后兼容性

什么?

现在,我们已经讨论了为什么我们觉得是时候进行一些“清理”了,让我们仔细看看最相关的变化。另请参阅迁移说明的“重大更改”部分以了解更多详细信息。

MySQL 的旧版 DDL 解析器已被删除 ( DBZ-736 );如果您尚未使用基于 Antlr 的版本(它是在 0.8 中引入的,并在 0.9 中成为默认版本),强烈建议您使用数据库对其进行测试。如果您遇到任何解析错误,请报告它们,以便我们可以在 0.10 最终版本中修复它们。

用于从更改事件检索新记录/文档状态的 SMT 已分别从io.debezium.transforms.UnwrapFromEnvelope和重命名io.debezium.connector.mongodb.transforms.UnwrapFromMongoDbEnvelope为ExtractNewRecordState和ExtractNewDocumentState( DBZ-677 )。从 0.10 开始,旧名称仍然可以使用,但这样做会引发警告。它们计划在 Debezium 0.11 中删除。

删除了早期 Debezium 版本中不推荐使用的几个连接器选项 ( DBZ-1234 ):drop.deletes新记录/文档状态提取 SMT 的选项(由delete.handling.mode选项取代)、rows.fetch.size选项(由 取代snapshot.fetch.size)、MySQL 选项adaptive的值(容易出现)time.precision.mode对于损失值,请adaptive_microseconds改用)和snapshot.minimal.locksMySQL 连接器(由 取代snapshot.locking.mode)

为了保持一致性,发件箱模式的(孵化)SMT 的几个选项名称已重命名 ( DBZ-1289 )

source为了保持一致性,CDC 事件块中的几个字段已被重命名 ( DBZ-596 );由于在使用 Avro 和架构注册表时,这在技术上是向后不兼容的更改,因此我们添加了一个连接器选项source.struct.version,当设置为 value 时v1,将使连接器生成以前的source结构。是默认结构,任何消费者都应尽快v2调整以适应新结构。source

新功能和错误修复

除了这些更改之外,0.10.0.Alpha1 版本还包含一些功能添加和错误修复:

SQL Server 连接器支持用于快照的自定义 SELECT 语句 ( DBZ-1224 )

数据库、模式和表/集合名称已一致添加到source来自所有连接器的 CDC 事件块 ( DBZ-875 )

客户端身份验证适用于 MySQL 连接器 ( DBZ-1228 )

嵌入式引擎在重新启动后不再重复事件(DBZ-1276)

CREATE INDEX修复了与语句相关的解析器错误( DBZ-1264)

总的来说,此版本解决了30 个问题。非常感谢Arkoprabho Chakraborti、Ram Satish和Yuchao Wang对此版本的贡献!

说到贡献者,我们也对曾经为 Debezium 做出贡献的每个人的名单进行了一些整理。到目前为止,已有不少于111 人贡献了代码,这真是太惊人了!非常感谢大家,你们太棒了!

外表

展望未来,在进入 Debezium 0.10 Final 之前,我们希望统一不同连接器的更多细节。例如,该source属性snapshot将被更改,因此它可以采用三种状态之一:true、false或last(表示该事件是初始快照期间创建的最后一个事件)。

我们还将继续努力将现有的 Postgres 连接器迁移到为 SQL Server 和 Oracle 连接器建立的框架类。我们正在积极探索的另一件事是 Postgres 如何利用 Postgres 10 中添加的“逻辑复制”功能。这可能为我们提供一种无需自定义服务器端逻辑解码插件即可摄取更改事件的方法,这在云环境中证明是具有挑战性的,因为云环境通常只有一组有限的逻辑解码选项可用。

网友评论

搜索
最新文章
热门文章
热门标签