前言
记录一些遇到的问题
(1)Mixed模式不能通过filter进行过滤
问题来源
在 Mixed 模式下,通过 canal 解析 Binlog 获得 SQL 语句,再到另个数据库中去执行这个SQL。
问题出现
在单机和一个instance下,SQL 执行了两次,程序抛出异常。
出现这问题的可能原因
同时监听了这两个数据库,导致执行一次触发一次
1. 通过设置白名单(subscribe)、黑名单
行不通
因为在 Mixed 模式下,filter将失效,因为不解析sql,所以无法准确提取tableName进行过滤 资料参考
<https://github.com/alibaba/canal/wiki/AdminGuide>
2. 业务逻辑判断
既然不能通过设置filter来判断,那就自己写逻辑。
根据上个问题,我们知道在 Mixed 模式下 无法准确提取 tableName,那么就根据 数据库名(schemaName)来判断。
(2)canal 指定 timestamp
当然这些工作,你得先停止 canal ./stop.sh
每修改完 instance.properties ,请删除 meta.dat
因为canal启动后可能先去读取 meta.dat 中 position 的位置,然后在当前位置往下读
只看了阿里简介,没详细看源码,so,这些是我的猜想
在看一下阿里的 EventParser 设计图
我的 instance.properties 配置
热门工具 换一换