环境信息
canal version 1.1.0 mysql version 5.7.22
问题描述
在canal的HA模式下使用 tsdb 功能,使用的默认的本地的 h2数据库, 最开始认为canal在重启的时候会从mysql master中更新一份meta_snapshot 到本地的h2 数据库(h2中已经有旧的meta_snapshot)
但是在后来出过几次问题后进行测试才发现canal在重启的时候会判断是否有对应的h2文件,如果有的话就不会再去mysql master中进行拉取了,而是直接根据本地的 meta_history+meta_snapshot进行 内存中meta schema的 构建。
这样的话可能 两台cannal中的meta data差异很大但是还是能够正常消费,但是实际中的列名可能已经对不上了。
比如:
t0 时刻 连接为 canal01 mysql example 表 为 id,age,name 字段 canal01 example 表 为id,age,name 字段
t0+1 时刻发生HA切换 连接为canal02 mysql 发生ddl example 表 为 id,age,phone字段 这个时候canal02解析的数据对应的列名为 id,age,phone 和mysql中是一致的
t0+1+2 时刻再发生HA切换 mysql连接切回canal01 这个时候canal01的解析也是正常的,但是对应解析出来的数据变成了 id,age,name 三个字段 和实际当中是对不上的
这种情况会是一个比较大的隐患,麻烦您能够在文档中增加一下着重说明,也就是 在HA模式下使用tsdb,一定要使用中心化的tsdb,不能使用本地的tsdb, 打扰您了!
原提问者GitHub用户chenchuangc
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。