复现
在之前的博客中说明过,我负责的业务有数据同步的需求,是从 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
的形式同步数据,更多的操作可以参考同步工具的使用文档。
引用
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!