写点什么

cdc 任务同步错误但不会触发告警问题记录

  • 2023-06-23
    北京
  • 本文字数:865 字

    阅读完需:约 3 分钟

作者: sustyle 原文来源:https://tidb.net/blog/2526b37d


[toc]

1 背景

【2023-06-15 12:56:01】业务反馈 ticdc 没有日志同步到 kafka,于是我就查看了一下 ticdc 任务状态,发现已经出现异常,但是奇怪的是没有发出告警。


本文就简单记录一下,包括问题现象,问题解决,以及问题分析及规避,仅供参考。

2 问题定位


可以看到是因为数据包太大导致同步失败,但是 dba 并没有收到相关告警。

3 问题恢复

现在首要任务就先恢复业务,于是想着重建任务,重建过程中发现 GC 已经过期了



2023-06-15 13:02:58 这个时间点完成了重建任务,并开始追堆积的数据。



重建任务后,可定位到丢失数据的时间段:


  • 报错点位:442142592159449107

  • 重新新建任务同步开始点位:442168771222437888


现在登录到 pd 将 tso 换成时间,如下:



可以知道大概丢失了 28 小时的日志。

4 问题排查

现在排查一下 cdc 为什么没有报错,或者说 alertmanager 为什么没有告警。


通过下面的告警信息可以发现刚重建完 cdc 任务,alaertmanager 就告警说延迟过大了,所以应该可以排除 alertmanager 故障,就是说告警通道正常。



现在排查 cdc 节点的日志,总共三个 cdc 节点。下面挨个排查


  • 第一个节点



  • 第二个节点



  • 第三个节点



可以发现三个节点在故障期间【2023-06-13 15:08:57 至 2023-06-14 18:53:22】都没有日志记录下来,所以我猜想,是不是任务没有被注册到 cdc 里面呢。


之前就遇到过,删除报错的 cdc 任务后,alertmanager 还是会一直报错【cdc 错误的任务】,需要重启 cdc 节点才会停止报错,所以这次的问题是不是也是类似的,cdc 内部根本没有这个任务,所以这个任务报错就不会被触发告警。

5 总结

如何规避这类问题呢,我能想到的规避问题的方式就是:


  • 1、做完新建,或者其他更新之类的操作,挨个 reload 一遍 cdc 节点。

  • 2、添加任务后主动触发一次告警。


比如同步数据从十分钟前的 tso 开始同步,这样就会触发延迟告警。


  • 3、定期巡检 cdc 任务的状态。

6 写在最后

本文对 cdc 任务报错但未触发告警问题做了简单的记录,并分析,仅代表个人想法,各公司的业务场景也不一样,还可能碰上其他未知的问题,本文所有内容仅供参考。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
cdc任务同步错误但不会触发告警问题记录_故障排查/诊断_TiDB 社区干货传送门_InfoQ写作社区