问题描述
提示:这里描述项目中遇到的问题:
canal突然有一天发现不能同步数据了
经过排查发现是 rowChange.getRowDatasList() 获取不到变更数据了
经过沟通发现是公司的运维修改了mysql的 binlog_format
为miexd
模式
解决方案:
扒拉了canal的issue 发现 canal虽然 支持 miexd
模式的读取 但是读不到变化前变化后的数据
两个方案 :
- .采用使用sql解析的方案 这个太复杂 不建议 获取简单的表名可以考虑
- 是新加一个 row模式的mysql节点
在我扒拉了一晚上的源码跟 issue后 得出结论 如果试图想使 canal 支持 mixed 模式读取 rowChange.getRowDatasList()
基本没戏
mixed 虽然是混合模式 但是他默认是 statement