文档菜单
文档首页
/
MongoDB Kafka 连接器
/

无效的恢复令牌

在本页

  • 概述
  • 堆栈跟踪
  • 原因
  • 解决方案
  • 暂时容忍错误
  • 重置存储的偏移量
  • 预防

学习如何在 MongoDB Kafka 源连接器中恢复无效的恢复令牌。

以下堆栈跟踪表明源连接器具有无效的恢复令牌

...
org.apache.kafka.connect.errors.ConnectException: ResumeToken not found.
Cannot create a change stream cursor
...
Command failed with error 286 (ChangeStreamHistoryLost): 'PlanExecutor
error during aggregation :: caused by :: Resume of change stream was not
possible, as the resume point may no longer be in the oplog
...

当您的源连接器的恢复令牌的 ID 与您的 MongoDB 部署的oplog中的任何条目不对应时

在这种情况下,您暂停您的源连接器,并填充您的 MongoDB 部署的 oplog

  1. 您启动一个带有 MongoDB Kafka 源连接器的 Kafka 部署。

  2. 您在源 MongoDB 命名空间中产生一个更改事件,并且您的连接器存储了一个与该事件对应的恢复令牌。

  3. 您暂停您的源连接器。

  4. 在您的连接器暂停期间,您填充您的 MongoDB oplog 以便 MongoDB 删除与您的恢复令牌对应的 oplog 条目。

  5. 您重新启动您的源连接器,但它无法继续处理,因为其恢复令牌不存在于您的 MongoDB oplog 中。

在此场景中,您的源连接器监听一个不常更新的MongoDB命名空间的更改,并且没有启用心跳功能

  1. 您启动一个带有 MongoDB Kafka 源连接器的 Kafka 部署。

  2. 您在源 MongoDB 命名空间中产生一个更改事件,并且您的连接器存储了一个与该事件对应的恢复令牌。

  3. 您的源MongoDB命名空间没有在您的MongoDB部署轮换与您的恢复令牌相对应的更改事件出其oplog的时间内更新。

  4. 您在源MongoDB命名空间中产生一个更改事件,而您的源连接器无法恢复处理,因为其恢复令牌在您的MongoDB oplog中不存在。

有关oplog的更多信息,请参阅MongoDB手册

有关更改流的更多信息,请参阅更改流指南

您可以使用以下策略之一恢复无效的恢复令牌

您可以将源连接器配置为在生成更新连接器恢复令牌的更改流事件时容忍错误。这种恢复策略是最简单的,但存在风险,即您的连接器可能暂时忽略与无效恢复令牌无关的错误。如果您不习惯在部署中暂时容忍错误,您可以删除存储的偏移量

要配置源连接器以暂时容忍错误

  1. 设置errors.tolerance选项以容忍所有错误

    errors.tolerance=all
  2. 在由您的源连接器引用的集合中插入、更新或删除文档以生成更新连接器恢复令牌的更改流事件。

  3. 一旦您生成一个更改流事件,将 errors.tolerance 选项设置为不再容忍错误。

    errors.tolerance=none

有关 errors.tolerance 选项的更多信息,请参阅错误处理和中断恢复属性页面。

您可以重置Kafka Connect的偏移量数据,其中包含您的恢复令牌,以允许连接器恢复处理更改流。

要重置偏移量数据,将配置属性 offset.partition.name 的值更改为您Kafka部署上不存在的分区名称。您可以像这样设置 offset.partition.name 属性:

offset.partition.name=<a string>

提示

命名偏移量分区

考虑使用以下模式来命名您的偏移量分区

offset.partition.name=<source connector name>.<monotonically increasing number>

此模式提供以下好处

  • 记录您重置连接器的次数

  • 文档到哪个连接器偏移量分区属于

例如,如果您将源连接器命名为 "source-values",并且您第一次设置 offset.partition.name 属性,请按以下方式配置连接器:

offset.partition.name=source-values.1

下次重置连接器的偏移量数据时,按以下方式配置连接器:

offset.partition.name=source-values.2

有关 offset.partition.name 配置属性的更多信息,请参阅错误处理和中断恢复属性页面。

有关连接器命名的更多信息,请参阅官方Apache Kafka 文档。

为了防止由于不常更新的命名空间引起的无效简历令牌错误,请启用心跳。心跳是您源连接器的一个功能,它使得您的连接器在定期更新其简历令牌的同时,也会在您的源MongoDB命名空间内容发生变化时更新。

在您的源连接器配置中指定以下选项以启用心跳

heartbeat.interval.ms=<a positive integer>

有关心跳的更多信息,请参阅错误处理和从中断恢复属性指南

返回

故障排除