三方客户端Canal链接RDS获取binlog错位问题

举报
云技术搬运工 发表于 2021/05/14 10:50:47 2021/05/14
【摘要】 使用三方客户端canal链接云上RDS for mysql 获取binlog来同步数据,canal提示Received error packet: errno = 1236, sqlstate = HY000 errmsg = Could not find first log file name in binary log index file。详细日志可以看到是 mysql-bin.002472

问题现象

使用三方客户端canal链接云上RDS for mysql 获取binlog来同步数据,canal提示Received error packet: errno = 1236, sqlstate = HY000 errmsg = Could not find first log file name in binary log index file。详细日志可以看到是 mysql-bin.002472这个binlog获取不到。

1.png

排查思路

        一般数据库的客户端连接数据库进行增删改查,而canal是要获取binlog,基于数据库增量日志解析,提供增量数据订阅&消费。(不熟悉的客户端如canal,可以通过搜索引擎搜索关键字如canal查询)

客户端canal日志提示“获取的binlog名去找实际的binlog文件时找不到”。则从服务端rds本身先排查binlog名(mysql-bin.index里面)和实际datadir下的binlog文件是否能对应上,如果能对应上,那可以定界是客户端的问题。

        定界为客户端的问题后,若对三方客户端工具不了解,请求助三方专业渠道或参考搜索引擎等网络上案例自行排查。


问题排查

1、登录DAS,查看RDS侧的binlog最新日志

2.png

2、或链接目标数据库,执行 mysql> show binary logs;

3.png

3、或在控制台 实例详情中备份恢复页面查看

4.png

4、如果此文件列表在canal日志报错中,则定界是RDS服务问题,如果没有则定界是客户端问题。此案例即为canal客户端缓存的binlog列表为老旧列表,需删除列表后重启canal服务。


排查结论

Canal客户端缓存的binlog列表为老旧列表,需删除列表后重启canal服务。由于要同步的位置都记录在元数据文件meta.dat文件中,如果此时重启Canal服务,还是会出现同样的问题,找不到binlog文件,要做的就是先备份原来的meta.dat(换名称后备份),停掉Canal服务,删除meta.dat文件,再次重启Canal,业务数据即可恢复正常。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。