Debezium MySQL(MariaDB)连接器:如何从先前的二进制日志文件位置恢复

时间:2018-06-21 06:30:45

标签: apache-kafka-connect cdc debezium

我正在使用 Debezium-connector-mysql-0.7.5-plugin 进行CDC连接MariaDB v10.0.32。 CDC记录将保存在HDFS中以进行进一步处理。在发生以下情况之前,一切都是完美的:

  1. 连接中断
  2. 完全停止卡夫卡
  3. 停止的MariaDB服务器

我从CDC记录中看到,最新处理的bin日志坐标如下:

File : mysql-bin.000008
Position: 2155

由于上述操作,我面临以下后果:

  1. MariaDB在重新启动期间旋转其bin日志,当前状态如下所示

    +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000009 | 326 | | | +------------------+----------+--------------+------------------+

  2. 我先前注册的Debezium连接器在新启动的Kafka中不再可用

在这种情况下,如果我从头开始,连接器将通过以下操作拍摄初始快照:

  1. 放置锁,然后从所有表中读取数据
  2. 完成后,它开始读取最新的bin日志文件mysql-bin.000009

考虑到我的情况,有什么方法可以指示Debezium从mysql-bin.000008-位置2155恢复其操作并绕过初始快照。

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试将一条记录插入Connect的offset主题中,以表示您想要继续的位置。但是在这种情况下,我不建议这样做,因为您会丢失连接器离开的时间与日志旋转的时间之间的事件。因此,通过确实拍摄新快照,您会更加安全。

答案 1 :(得分:0)

据我尝试,您无法重置binlog文件名和debezium的位置。