我很荣幸地宣布 Debezium 1.6 系列的第一个版本,1.6.0.Alpha1!
此版本为 MySQL 和 PostgreSQL 连接器带来了全新的增量快照功能,为 Debezium Server 带来了 Kafka sink,以及一系列广泛的错误修复和其他小功能添加。
增量快照
运行 Debezium 时存在一些痛点
-
在新的连接器重新启动后,流式传输开始之前必须执行一致性快照
-
在连接器运行一段时间后,无法触发完整或部分快照
从这个版本开始,我们正在为这两个潜在的陷阱部署解决方案。
更简单的解决方案——在运行时触发快照的能力,是通过 **临时快照** 来实现的。用户可以通过向 Debezium 发送一个 `execute-snapshot` 信号 来随时触发快照,并在信号中指定要快照的表以及要使用的快照类型(目前只支持 `incremental`,详见下文)。当 Debezium 收到信号后,它将执行请求表的快照。
与临时快照相辅相成的更复杂的部分是 **增量快照**。此功能允许用户在流式传输阶段执行一组表的快照,而无需中断流式传输。此外,与初始快照不同,快照将在连接器重新启动时恢复,而无需从头开始。
此功能的实现基于 DBLog Framework 最初发明的一种新颖的快照方法。Debezium 的实现将在 设计文档 中进行更详细的描述。
如果您想亲自尝试此功能,则需要
-
提供一个 信号表
-
使用类似 SQL 命令触发临时增量快照
INSERT INTO myschema.debezium_signal VALUES('ad-hoc-1', 'execute-snapshot', '{"data-collections": ["schema1.table1", "schema1.table2"]}') Debezium Server 的 Kafka Sink
Debezium 连接器可以运行在 Kafka Connect 中,也可以使用 Debezium Server 进行部署,后者提供不同的目标 Sink。从本版本开始,如果 Sink 是 Apache Kafka,则不再需要使用 Kafka Connect,而是可以使用 Debezium Server 和 Apache Kafka Sink 来代替,这可能会简化某些部署的操作要求。在这种情况下,将使用常规的 Apache Kafka 客户端 API。
总共为本次发布修复了 47 个问题。非常感谢所有为此做出贡献的社区成员:Alfusainey Jallow、Bingqin Zhou、Hossein Torabi、Kyley Jex、Martín Pérez、Patrick Chu、Raphael Auv、Tommy Karlsson、WenChao Ke 和 yangsanity。
对于即将发布的 1.6 预览版本,我们计划专注于完成增量快照的后续任务,并支持 SQL Server 和 Db2 连接器,进一步改进基于 LogMiner 的 Oracle 连接器实现,主要涉及模式演进和 LOB 支持。
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。