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


Debezium 是一个分布式系统,用于捕获多个上游数据库中的所有更改,它不会丢失或丢失事件。当系统正常运行或谨慎管理时,Debezium 会 精确 发送每个更改事件记录。

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

以下部分详情:

配置和启动错误

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

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

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

MySQL 变得不可用

如果您的 MySQL 服务器不可用,Debezium 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 代理不可用,Debezium MySQL 连接器会暂停,直到重新建立连接,连接器恢复其关闭的位置。

MySQL 清除 binlog 文件

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.