Debezium日常分享系列之:Debezium2.5稳定版本之处理常见问题

本文主要是介绍Debezium日常分享系列之:Debezium2.5稳定版本之处理常见问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Debezium日常分享系列之:Debezium2.5稳定版本之处理常见问题

  • 一、配置和启动错误
  • 二、MySQL 不可用
  • 三、Kafka Connect stops gracefully
  • 四、Kafka Connect 进程崩溃
  • 五、Kafka变得不可用
  • 六、MySQL 清除 binlog 文件
  • 七、Debezium技术总结

下面描述 Debezium 如何处理各种故障和问题。

  • Debezium从入门到精通系列之:百篇系列文章汇总之研究Debezium技术遇到的各种错误的解决方法

Debezium是一个分布式系统,可以捕获多个上游数据库中的所有变化;它永远不会错过或丢失任何事件。当系统正常运行或受到仔细管理时,Debezium 会提供每个变更事件记录的一次性交付。

如果确实发生故障,系统不会丢失任何事件。然而,当它从故障中恢复时,它可能会重复一些更改事件。在这些异常情况下,Debezium 与 Kafka 一样,提供至少一次变更事件的传递。

一、配置和启动错误

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

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

在这些情况下,错误消息包含有关问题的详细信息以及可能的建议解决方法。更正配置或解决 MySQL 问题后,重新启动连接器。

二、MySQL 不可用

如果您的 MySQL 服务器不可用,Debezium MySQL 连接器将失败并出现错误,并且连接器将停止。当服务器再次可用时,重新启动连接器。

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

如果未启用 GTID,连接器将仅记录其所连接的 MySQL 服务器的 binlog 位置。要从正确的二进制日志位置重新启动,您必须重新连接到该特定服务器。

三、Kafka Connect stops gracefully

当 Kafka Connect 正常停止时,Debezium MySQL 连接器任务在新的 Kafka Connect 进程上停止并重新启动时会出现短暂的延迟。

四、Kafka Connect 进程崩溃

如果 Kafka Connect 崩溃,进程将停止,所有 Debezium MySQL 连接器任务也会终止,且不会记录最近处理的偏移量。在分布式模式下,Kafka Connect会重新启动其他进程上的连接器任务。但是,MySQL 连接器从早期进程记录的最后一个偏移量开始恢复。这意味着替换任务可能会生成一些在崩溃之前处理的相同事件,从而创建重复事件。

每条更改事件消息都包含特定于源的信息,您可以使用这些信息来识别重复事件,例如:

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

五、Kafka变得不可用

Kafka Connect 框架使用 Kafka 生产者 API 记录 Kafka 中的 Debezium 更改事件。如果 Kafka 代理不可用,Debezium MySQL 连接器将暂停,直到重新建立连接并且连接器从中断处恢复。

六、MySQL 清除 binlog 文件

如果 Debezium MySQL 连接器停止时间过长,MySQL 服务器会清除旧的二进制日志文件,并且连接器的最后位置可能会丢失。当连接器重新启动时,MySQL 服务器不再具有起始点,连接器将执行另一个初始快照。如果禁用快照,连接器将失败并出现错误。

七、Debezium技术总结

更多Debezium技术请参考:

  • Debezium技术专栏

这篇关于Debezium日常分享系列之:Debezium2.5稳定版本之处理常见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/840633

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Python异常处理之避免try-except滥用的3个核心原则

《Python异常处理之避免try-except滥用的3个核心原则》在Python开发中,异常处理是保证程序健壮性的关键机制,本文结合真实案例与Python核心机制,提炼出避免异常滥用的三大原则,有需... 目录一、精准打击:只捕获可预见的异常类型1.1 通用异常捕获的陷阱1.2 精准捕获的实践方案1.3

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返