Debezium MySQL (MariaDB) 连接器:如何从以前的 bin-log 文件位置恢复

Posted

技术标签:

【中文标题】Debezium MySQL (MariaDB) 连接器:如何从以前的 bin-log 文件位置恢复【英文标题】:Debezium MySQL (MariaDB) connector : How to resume from a previous bin-log file position 【发布时间】:2018-11-30 09:18:47 【问题描述】:

我正在使用 Debezium-connector-mysql-0.7.5-plugin 为 CDC 连接 MariaDB v10.0.32。 CDC 记录保存在 HDFS 中以供进一步处理。一切都很完美,直到出现以下情况:

    停止连接 完全停止 Kafka 已停止 MariaDB 服务器

从CDC Records可以看出,最新处理的bin log坐标如下:

File : mysql-bin.000008
Position: 2155

由于上述行为,我面临以下后果:

    MariaDB 在重启期间轮换它的 bin 日志,当前状态如下所示

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

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

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

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

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

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Debezium MySQL (MariaDB) 连接器:如何从以前的 bin-log 文件位置恢复的主要内容,如果未能解决你的问题,请参考以下文章

Debezium - MySQL 连接器 - Kinesis - 服务未启动

Debezium的基本使用(以MySQL为例)

Debezium - 自定义负载 - MySQL 连接器

如何为 mysql 数据库创建多个 Debezium 连接器

MySQL 的 Debezium 刷新超时和 OutOfMemoryError 错误

Debezium 没有为 mysql 提供嵌入式版本的 CDC