请问MySQL表的binlog_format为STATEMENT 能使用canal吗?

zgw06629 发布于 03/29 19:16
阅读 475
收藏 0

准备使用canal来监听MySQL表的变化, 但是QuickStart文档中写到

“对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式”

但是我这边要监听的生产服务器MySQL(5.6.32)的binlog_format为STATEMENT, 这种情况下还能用canal吗?

业务背景:

有一个主题表 topic 以及 关联表(即主题下的文章) topic_relation 

不管主题本身的变更 还是 主题关联关系的更新 如 新增文章、删除文章 都需要通知下游 重新刷新该主题的静态页

 

加载中
0
x
xiaoweia

可以使用 Canal 监听基于 STATEMENT 格式的 MySQL binlog,但需要注意一些潜在的问题。在 STATEMENT 格式下,MySQL 会记录每个语句的 SQL 命令,并将其作为 binlog 事件写入 binlog 中。当使用 Canal 解析基于 STATEMENT 格式的 binlog 时,它会解析并提取每个 SQL 语句,并将其转换为相应的数据操作。但是,由于某些原因(例如函数或触发器),SQL 命令可能不会准确反映实际执行的数据操作,这可能导致 Canal 解析出的数据不正确。

为了避免这种情况,建议将 MySQL 的 binlog_format 设置为 ROW 格式,这将直接记录对行数据的更改,而不是记录对数据执行的 SQL 命令。这样 Canal 将能够准确地解析每个更改事件,并将其转换为相应的数据操作。

sprouting
sprouting
这chatGPT还是挺好用的
0
zgw06629
zgw06629

多谢! 准备修改生产MySQLbinlog-format为ROW 然后找个晚上给重启下

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部