MySQL-Could not find first log file name in binary log index file

复现

在之前的博客中说明过,我负责的业务有数据同步的需求,是从 MySQL 实时同步数据到 ClickHouse,为此我们使用了一个工具 clickhouse-mysql-data-reader,该工具的底层是通过监听 MySQLbin log 来实现实时同步数据。

就在今早,数据同步不知为何停止了,当发现问题重新拉起同步任务时,就发现同步脚本出现了异常:

1
Could not find first log file name in binary log index file

思考问题

在看过异常报错信息之后,其大致是因为同步脚本停止了同步任务,之后就没有更新本地的 bin log 索引,此时等待我再拉起同步任务时,同步脚本使用本地未修改的 bin log 索引去 MySQL 拉取数据时,MySQLbin log 索引经过业务数据的写入已经覆盖了之前的索引,同步脚本没有找到对应的索引就抛出异常。


解决方案

那么就下来的问题就是如何查找正确的 bin log 索引,然后修改同步脚本的 bin log 索引即可恢复同步数据。

1
show binary logs;

上述命令可以帮助你查看到 MySQL 最新的 bin log 索引,之后同步修改脚本的 bin log 索引即可。

那么关于两次索引之间的数据如何同步呢?可以通过添加 where case 采用 select 的形式同步数据,更多的操作可以参考同步工具的使用文档。


引用


个人备注

此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!