TiCDC checkpoint 不推进

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.4.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

TiCDC 的checkpoint 一直不推进,也没看到报错。
怎么排查?
image

/ # ./cdc cli --pd=http://pd-ip:2379 changefeed query -c 79ec8f7e-a8f7-42b4-8bb9-2299e18a9993
{
  "info": {
    "sink-uri": "kafka://kafka:9008/topic?kafka-version=2.5.1\u0026max-message-bytes=1073741824\u0026partition-num=1",
    "opts": {
      "max-message-bytes": "1048588"
    },
    "create-time": "2024-12-05T05:39:27.047131056Z",
    "start-ts": 454394423947558916,
    "target-ts": 0,
    "admin-job-type": 0,
    "sort-engine": "unified",
    "sort-dir": "",
    "config": {
      "case-sensitive": true,
      "enable-old-value": true,
      "force-replicate": false,
      "check-gc-safe-point": true,
      "filter": {
        "rules": [
          "db.table"
        ],
        "ignore-txn-start-ts": null
      },
      "mounter": {
        "worker-num": 16
      },
      "sink": {
        "dispatchers": [
          {
            "matcher": [
              "*.*"
            ],
            "dispatcher": "default"
          }
        ],
        "protocol": "avro",
        "column-selectors": null
      },
      "cyclic-replication": {
        "enable": false,
        "replica-id": 0,
        "filter-replica-ids": null,
        "id-buckets": 0,
        "sync-ddl": false
      },
      "scheduler": {
        "type": "table-number",
        "polling-time": -1
      },
      "consistent": {
        "level": "none",
        "max-log-size": 64,
        "flush-interval": 1000,
        "storage": ""
      }
    },
    "state": "normal",
    "error": null,
    "sync-point-enabled": false,
    "sync-point-interval": 600000000000,
    "creator-version": "v5.4.0-dirty"
  },
  "status": {
    "resolved-ts": 454394423947558916,
    "checkpoint-ts": 454394423947558916,
    "admin-job-type": 0
  },
  "count": 0,
  "task-status": [
    {
      "capture-id": "3bf53d0a-ca36-43ff-bf6f-27ea1e57e55f",
      "status": {
        "tables": {
          "176": {
            "start-ts": 454394423947558916,
            "mark-table-id": 0
          }
        },
        "operation": {},
        "admin-job-type": 0
      }
    },
    {
      "capture-id": "c037319b-f3a6-4c1c-a63a-a840f902b9a0",
      "status": {
        "tables": null,
        "operation": null,
        "admin-job-type": 0
      }
    },
    {
      "capture-id": "f403a293-c7c6-47f5-990f-6c978380a6f5",
      "status": {
        "tables": null,
        "operation": null,
        "admin-job-type": 0
      }
    }
  ]
}

TiCDC的checkpoint未推进且无错误信息的故障排除分析:

在TiCDC中,检查点(checkpoint)未能推进而没有错误消息的情况可能由多种原因引起。以下是一些潜在的原因及其解决方案:

1. 网络问题

TiCDC与下游系统之间的网络连接不稳定可能导致数据无法正常传输,从而影响检查点的推进。建议检查网络连接的稳定性,并确保没有丢包或延迟。

解决方案

  • 使用网络监控工具(如Grafana)检查网络延迟和丢包情况。
  • 确保TiCDC与下游系统之间的网络通畅。

2. 下游系统的性能问题

如果下游系统(如数据库)处理能力不足,可能会导致TiCDC无法及时提交数据,从而影响检查点的推进。

解决方案

  • 检查下游系统的负载情况,确保其能够处理TiCDC发送的数据。
  • 考虑扩展下游系统的资源或优化其性能。

3. TiCDC配置问题

TiCDC的配置不当可能导致其无法正常推进检查点。例如,配置的最大处理时间过长,可能会导致检查点停滞。

解决方案

  • 检查TiCDC的配置文件,确保所有参数设置合理。
  • 特别关注与检查点相关的配置,如checkpoint-intervalmax-message-size等。

4. 数据量过大

如果TiCDC需要处理的数据量过大,可能会导致检查点推进缓慢,甚至停滞。

解决方案

  • 考虑将数据分批处理,减少每次处理的数据量。
  • 监控TiCDC的资源使用情况,确保其有足够的CPU和内存资源。

5. TiCDC内部问题

TiCDC内部可能存在未被捕获的错误或bug,导致检查点无法推进。

解决方案

  • 查看TiCDC的日志,寻找任何可能的警告或信息。
  • 如果发现问题,考虑升级到最新版本的TiCDC,以获取最新的bug修复和性能改进。

参考文献

通过以上分析和解决方案,可以帮助您更好地理解和解决TiCDC检查点未推进的问题。如果问题仍然存在,建议联系TiDB的技术支持以获得进一步的帮助。.

1 个赞

在排查 TiCDC 的 checkpoint 无法推进且没有错误信息的情况时,可以按照以下步骤进行详细检查和分析:

1. 检查 TiCDC 状态和配置

  • 查看 TiCDC 状态:使用命令 tiup cdc:cli capture list --server=http://<TiCDC_IP>:8300 查看 TiCDC 的状态,确认所有节点是否正常运行。
  • 检查配置:确保 TiCDC 的配置文件中 gc-ttl 设置合理,默认值为 86400(1天),可以考虑适当增加,例如设置为 172800(2天)。使用命令 tiup cluster edit-config <cluster-name> 进行修改,并重载配置。

2. 日志分析

  • 查看 TiCDC 日志:检查 TiCDC 的日志文件。查找是否有相关的警告或信息,特别是与 checkpoint 相关的日志。
  • 分析日志内容:关注日志中是否有关于 checkpoint 的信息,尤其是是否有提示 checkpoint 被阻塞或未能推进的原因。

3. TiDB 和下游数据库状态检查

  • 检查 TiDB 状态:确保 TiDB 实例正常运行,使用 SHOW PROCESSLIST 命令查看当前的 SQL 进程,确认没有长时间运行的查询。
  • 下游数据库状态:确认下游数据库(如 Kafka、MySQL 等)是否正常,检查网络连接是否稳定,确保没有丢包或延迟。

4. 网络连接和带宽检查

  • 网络延迟测试:使用 ping 命令测试 TiCDC 与 TiDB 及下游数据库之间的网络延迟,确保网络连接正常。
  • 带宽监控:检查网络带宽是否充足,确保在高负载情况下不会造成数据传输延迟。

5. TiCDC 监控指标分析

  • 监控指标:通过 TiCDC 的监控面板查看 CPU 使用率、内存使用率和 goroutine 数量等指标,确保资源没有被过度消耗。
  • 性能调优:根据监控数据,考虑是否需要对 TiCDC 进行性能调优,例如增加节点数量或调整资源分配。

6. 其他建议

  • 重启 TiCDC:如果以上步骤未能解决问题,可以尝试重启 TiCDC 节点,使用命令 tiup cluster restart -R cdc
1 个赞

本来就是一个失败了很久的任务,也没人用,重新启动了下(ts用当前的),发现checkpoint不动。最终是没搞定,直接删了,不同步了,也没时间研究为什么失败了。可惜没法给社区积累经验了

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。