5.7. Debezium MySQL 连接器如何处理错误和问题


Debezium 是一个分布式系统,可捕获多个上游数据库中的所有更改,永远不会丢失或丢失事件。当系统正常运行或被仔细管理时,Debezium 会在每次更改事件记录时 完全 提供。

如果发生错误,系统将不会丢失任何事件。但是,当它从故障中恢复时,可能会重复一些更改事件。在这些异常情况下,Debebe (如 Kafka)提供 至少一次 更改事件。

详情包括在以下部分:

配置和启动错误

在以下情况下,当尝试启动时连接器会失败,在日志中报告错误或异常,并停止运行:

  • 连接器的配置无效。
  • 连接器无法使用指定的连接参数成功连接到 MySQL 服务器。
  • 连接器试图在 binlog 中的一个位置重启,其中 MySQL 不再有可用的历史记录。

在这些情况下,错误消息包含有关此问题的详细信息,并可能会有推荐的临时解决方案。在更正配置或解决 MySQL 问题后,重启连接器。

MySQL 变得不可用

如果您的 MySQL 服务器不可用,Debebe MySQL 连接器会失败,并显示错误,连接器将停止。当服务器再次可用时,重启连接器。

但是,如果为高可用性 MySQL 集群启用了 GTID,您可以立即重启连接器。它将连接到集群中的不同 MySQL 服务器,找到服务器 binlog 中代表最后一个事务的位置,并开始从该特定位置读取新的服务器的 binlog。

如果没有启用 GTID,连接器会记录仅连接它的 MySQL 服务器的 binlog 位置。要从正确的 binlog 位置重启,您必须重新连接到该特定服务器。

Kafka Connect 正常停止

当 Kafka Connect 正常停止时,当 Debezium MySQL 连接器任务停止并在新的 Kafka Connect 过程中重启时,会有一个短暂的延迟。

Kafka Connect 进程崩溃

如果 Kafka Connect 崩溃,该过程会停止,并且任何 Debezium MySQL 连接器任务终止,而不记录它们最近处理的偏移量。在分布式模式中,Kafka Connect 会在其他进程中重启连接器任务。但是,MySQL 连接器从之前进程记录的最后一个偏移中恢复。这意味着,替换任务可能会在崩溃前生成一些相同的事件,从而创建重复的事件。

每个更改事件消息都包含可用于识别重复事件的源特定信息,例如:

  • 事件来源
  • MySQL 服务器事件时间
  • binlog 文件名和位置
  • GTID (如果使用)

Kafka 变得不可用

Kafka Connect 框架使用 Kafka producer API 在 Kafka 中记录 Debezium 更改事件。如果 Kafka 代理不可用,Debebe MySQL 连接器会暂停,直到重新建立连接,连接器会在其停止的地方恢复。

MySQL 清除 binlog 文件

如果 Debezium MySQL 连接器停止了很长时间,MySQL 服务器会清除旧的 binlog 文件,连接器的最后位置可能会丢失。当连接器重启时,MySQL 服务器不再有起点,连接器执行另一个初始快照。如果快照被禁用,则连接器会失败,并显示错误。

有关 MySQL 连接器如何执行初始 快照的详情,请查看快照。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.