Debezium 博客

我很高兴地宣布 Debezium 0.2.2 现已发布。此版本修复了 MySQL 连接器中的几个错误,这些错误可能导致源元数据不正确的变更事件,并消除了因连接器崩溃时机不当而导致连接器仅处理多行 MySQL 事件中部分行的可能性。有关这些更改的详细信息以及升级建议,请参阅我们的 发布说明

此外,感谢社区成员 报告 Debezium 0.2.x 只能与 Kafka Connect 0.9.0.1 一起使用。由于 消费者 API 的向后不兼容更改,Debezium 0.2.x 不能与 Kafka Connect 0.10.0.0 一起使用。我们下一版的 Debezium 将支持 Kafka 0.10.x。

我们还更新了 Debezium Docker 镜像(标签为 0.2latest),用于我们的 教程

我很高兴地宣布 **Debezium 0.2.1 现已发布**。 MySQL 连接器得到了显著改进,现在能够使用 GTIDs 监控和生成 高可用 MySQL 集群 的更改事件,在首次启动时执行一致性快照,并且拥有一个完全重新设计的 事件消息结构,为每个事件提供更多信息。我们的 更改日志 包含有关错误、增强功能、新功能和向后兼容性通知的所有详细信息。我们还更新了 教程

更新(2019年10月11日):在Kubernetes上运行Debezium(以及Apache Kafka和Kafka Connect)的一个更简单的方法是使用K8s Operator,例如Strimzi。您可以在此处找到在OpenShift上设置Debezium的说明,对于纯Kubernetes也适用类似的步骤。

我们的Debezium教程将逐步引导您完成Debezium的使用,通过安装、启动和连接运行在单个主机上的所有Docker容器。当然,您可以使用Docker Compose或自己的脚本来简化操作,但这只是自动化在单台机器上运行所有容器。您真正想要的是在多台机器的集群上运行容器。在这篇博文中,我们将使用Red Hat和Google提供的容器集群管理器Kubernetes来运行Debezium。

Kubernetes是一个容器(Docker/Rocket/Hyper.sh)集群管理工具。像许多其他流行的集群管理和计算资源调度平台一样,Kubernetes的根源在于Google,Google在运行大规模容器方面经验丰富。他们每周启动、停止和集群20亿个容器,并且他们贡献了许多使容器成为可能的核心Linux底层技术。他们一篇著名的论文讨论了一个名为Borg的内部集群管理器。有了Kubernetes,Google对大家用Java实现他们的论文感到厌倦,于是决定自己实现这篇论文:)

Kubernetes是用Go语言编写的,并且迅速成为大规模调度、管理和集群容器的实际API。这篇博文并非旨在成为Kubernetes的入门指南,因此我们建议您查阅入门指南文档以了解更多关于Kubernetes的信息。

当我们的MySQL连接器读取MySQL服务器或集群的binlog时,它会解析日志中的DDL语句,并随着时间的推移构建一个内存中的表模式模型。这个过程很重要,因为连接器会使用事件发生时表的定义为每个表生成事件。我们无法使用数据库的当前模式,因为它可能自连接器读取的时间点(或日志中的位置)以来已经发生了变化。

解析MySQL或任何其他主要关系数据库的DDL可能是一项艰巨的任务。通常,每个DBMS都有高度定制的SQL语法,尽管数据操作语言(DML)语句通常非常接近标准,但数据定义语言(DDL)语句通常不那么标准,并且涉及更多DBMS特定的功能。

那么,考虑到这一点,为什么我们自己编写了MySQL的DDL解析器呢?让我们首先看看Debezium需要DDL解析器做什么。

您可能已经注意到,我们有了新的网站,其中包含文档、博客以及关于 Debezium 社区和如何贡献的信息。请告诉我们您的想法,并贡献您的改进。

版权所有 © Debezium 及其作者。保留所有权利。有关我们的商标详情,请访问我们的 商标政策商标列表。第三方商标属于其各自所有者,在此提及并不表示任何认可或关联。
×