开发者社区> 问答> 正文

奇怪的报警:pid:321 delay_time:56792 seconds, but delay

报警信息如题,pipline页面显示延迟15h+。

我以为执行了什么大事务导致同步延迟这么大,但是我尝试在源库更新了一个字段,立刻就同步到目标库了。延迟时间缩短为0.9s。

为什么同步无阻塞的情况下还会一直报这个错?

一些额外的信息: 周一上午的时候通知某些节点维护,所以我把select,node涉及到的机器切换到其他机器上。 当时的切换步骤如下:

暂停channel 编辑pipline中select、load机器,切换到正常机器上 推送channel,启用channel 切换后我还测试了一下,是可以正常进行同步的。

节点维护在周一下午完成,完成后我又把select,load机器切回原来的机器。

这样运行到周三白天的时候也还是正常的,就今天周四上班的时候,发现邮箱收到好多封delaytime告警。

然后我就重启channel,并且在源库更新了一笔数据,是能够反映到目标库的。

现在已经没有告警了,只是不清楚为什么在同步无阻塞的情况下,会有这个告警?

原提问者Github用户 linqh1

展开
收起
绿子直子 2023-06-16 15:16:54 35 0
2 条回答
写回答
取消 提交回答
  • 这种情况可能是由于Canal客户端和服务端之间的心跳检测机制导致的。Canal客户端会定期向Canal服务端发送心跳包,以保持连接。如果Canal客户端在一定时间内没有向Canal服务端发送心跳包,Canal服务端就会认为该客户端已经断开连接,从而触发延迟告警。但是,即使Canal客户端和服务端之间的连接并没有真正断开,但如果心跳包未能及时发送,也会导致Canal服务端误判为连接断开,从而触发延迟告警。

    建议您检查Canal客户端和服务端之间的网络连接是否正常,并确保Canal客户端能够及时向Canal服务端发送心跳包。此外,您还可以尝试调整Canal客户端和服务端之间的心跳检测机制的参数,以减少误判的发生。

    2023-06-16 15:33:40
    赞同 展开评论 打赏
  • 感觉像是源库一直没更新导致的,可以设置个position超时报警然后自动恢复,再配下canal的开启心跳,在源库上间隔性的做一次更新动作试试

    原回答者 Github用户 welyss

    2023-06-16 15:24:39
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载