是否有可能使 Debezium 引擎与具有 binglog_format 作为 MIXED 而不是 ROW 的 mysql 一起工作

Posted

技术标签:

【中文标题】是否有可能使 Debezium 引擎与具有 binglog_format 作为 MIXED 而不是 ROW 的 mysql 一起工作【英文标题】:Is it possible to make Debezium engine work with mysql having binglog_format as MIXED instead of ROW 【发布时间】:2021-06-23 13:56:07 【问题描述】:

我正在寻找一种让 Debezium 使用 mysql 数据库的替代方法。

原因 - 我正在尝试连接到生产数据库,而我尝试连接的服务器有 85 个数据库,并且 binlog 与所有这些数据库共享。 现在我们有binlog_format=MIXED,要把它改成ROW并不是一件容易的事

自从MIXED is a combination of ROW AND STATEMENT 以来,我们有什么办法可以在客户端或数据库端进行调整来完成这项工作。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

我在大型生产 MySQL 数据库方面也有类似的经历,我们需要将所有副本迁移到行格式。很遗憾,我们没有找到其他解决方案。

【讨论】:

【参考方案2】:

Debezium 需要 ROW binlog 模式。如果您无法在生产数据库上更改此设置,一种替代方法可能是将 MySQL 复制设置为副本,并将 binlog 模式设置为 ROW。然后设置 Debezium 以从副本流式传输更改。这样您就不必修改主系统的设置,但由于额外的跃点,延迟当然会略微增加。

【讨论】:

如果改变这种方式,复制机将不会反映记录。因为master机器配置了MIXED

以上是关于是否有可能使 Debezium 引擎与具有 binglog_format 作为 MIXED 而不是 ROW 的 mysql 一起工作的主要内容,如果未能解决你的问题,请参考以下文章

无法为 SqlServer 连接器设置 debezium 嵌入式引擎

ClassNotFoundException 使用带有本地类和 Debezium 引擎的 QuarkusClassLoader

Kafka Connect JDBC 与 Debezium CDC

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

Debezium 连接器发件箱转换

是否有等效的 Debezium 命令可以在没有 Docker 容器的情况下启动 Kafka Connect