开发者社区> 问答> 正文

tableMetaTSDB找位点进入无限循环中

在这个类MysqlEventParser 下面这个方法

/

  • 根据给定的时间戳,在指定的binlog中找到最接近于该时间戳(必须是小于时间戳)的一个事务起始位置。
  • 针对最后一个binlog会给定endPosition,避免无尽的查询

/ private EntryPosition findAsPerTimestampInSpecificLogFile(MysqlConnection mysqlConnection, final Long startTimestamp, final EntryPosition endPosition, final String searchBinlogFile, final Boolean justForPositionTimestamp)*

我的配置文件里面指定了 canal.instance.master.journal.name=mysql-bin.000344 canal.instance.master.position=106199547

开启tsdb功能后

canal服务启动的时候 程序会进入这里找起始位点 由于没有找到这个位点程序会一致找下去甚至大于106199547 了还在找导致一直出于初始化阶段,然后就会出现 客户端无法创建cursor 。

我是通过这个命令找的 show binlog events in'mysql-bin.000344'

mysql-bin.000344 106199500 Rotate 609344520 106199547 mysql-bin.000345;pos=4

这条是最后一条记录 然后去取了106199547 作为canal.instance.master.position

然后上面的源码就进入无限循环当中

有数据的,但是已经进入下一个文件的了。 106199547 是mysql-bin.000344的最后一个位点, 但是下面是有 mysql-bin.000345文件的

原提问者GitHub用户zhp8341

展开
收起
绿子直子 2023-05-09 10:14:32 75 0
1 条回答
写回答
取消 提交回答
  • 最新的26版本优化了,判断退出条件为<=

    原回答者GitHub用户agapple

    2023-05-10 09:26:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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