复现
在之前的博客中说明过,我负责的业务有数据同步的需求,是从 MySQL 实时同步数据到 ClickHouse,为此我们使用了一个工具 clickhouse-mysql-data-reader,该工具的底层是通过监听 MySQL 的 bin log 来实现实时同步数据。
就在今早,数据同步不知为何停止了,当发现问题重新拉起同步任务时,就发现同步脚本出现了异常:
1 | Could not find first log file name in binary log index file |
思考问题
在看过异常报错信息之后,其大致是因为同步脚本停止了同步任务,之后就没有更新本地的 bin log 索引,此时等待我再拉起同步任务时,同步脚本使用本地未修改的 bin log 索引去 MySQL 拉取数据时,MySQL 的 bin log 索引经过业务数据的写入已经覆盖了之前的索引,同步脚本没有找到对应的索引就抛出异常。
解决方案
那么就下来的问题就是如何查找正确的 bin log 索引,然后修改同步脚本的 bin log 索引即可恢复同步数据。
1 | show binary logs; |
上述命令可以帮助你查看到 MySQL 最新的 bin log 索引,之后同步修改脚本的 bin log 索引即可。
那么关于两次索引之间的数据如何同步呢?可以通过添加 where case 采用 select 的形式同步数据,更多的操作可以参考同步工具的使用文档。
引用
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!