赞
踩
下面描述 Debezium 如何处理各种故障和问题。
Debezium是一个分布式系统,可以捕获多个上游数据库中的所有变化;它永远不会错过或丢失任何事件。当系统正常运行或受到仔细管理时,Debezium 会提供每个变更事件记录的一次性交付。
如果确实发生故障,系统不会丢失任何事件。然而,当它从故障中恢复时,它可能会重复一些更改事件。在这些异常情况下,Debezium 与 Kafka 一样,提供至少一次变更事件的传递。
在以下情况下,连接器在尝试启动时失败,在日志中报告错误或异常,并停止运行:
在这些情况下,错误消息包含有关问题的详细信息以及可能的建议解决方法。更正配置或解决 MySQL 问题后,重新启动连接器。
如果您的 MySQL 服务器不可用,Debezium MySQL 连接器将失败并出现错误,并且连接器将停止。当服务器再次可用时,重新启动连接器。
但是,如果为高可用 MySQL 集群启用了 GTID,您可以立即重新启动连接器。它将连接到集群中的不同 MySQL 服务器,在服务器的 binlog 中查找代表最后一个事务的位置,并开始从该特定位置读取新服务器的 binlog。
如果未启用 GTID,连接器将仅记录其所连接的 MySQL 服务器的 binlog 位置。要从正确的二进制日志位置重新启动,您必须重新连接到该特定服务器。
当 Kafka Connect 正常停止时,Debezium MySQL 连接器任务在新的 Kafka Connect 进程上停止并重新启动时会出现短暂的延迟。
如果 Kafka Connect 崩溃,进程将停止,所有 Debezium MySQL 连接器任务也会终止,且不会记录最近处理的偏移量。在分布式模式下,Kafka Connect会重新启动其他进程上的连接器任务。但是,MySQL 连接器从早期进程记录的最后一个偏移量开始恢复。这意味着替换任务可能会生成一些在崩溃之前处理的相同事件,从而创建重复事件。
每条更改事件消息都包含特定于源的信息,您可以使用这些信息来识别重复事件,例如:
Kafka Connect 框架使用 Kafka 生产者 API 记录 Kafka 中的 Debezium 更改事件。如果 Kafka 代理不可用,Debezium MySQL 连接器将暂停,直到重新建立连接并且连接器从中断处恢复。
如果 Debezium MySQL 连接器停止时间过长,MySQL 服务器会清除旧的二进制日志文件,并且连接器的最后位置可能会丢失。当连接器重新启动时,MySQL 服务器不再具有起始点,连接器将执行另一个初始快照。如果禁用快照,连接器将失败并出现错误。
更多Debezium技术请参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。