我在一台服务器上起了一个 canal 的进程,只接收 mysql 指定表的 binglog 然后发送到 rocketMQ 下面哪个是叙述是正确的呢?
1 所有表的 binlog 都发送到了 canal 进程所在的服务器,由 canal 进程负责 做 filter
2 只是指定表的 binlog 发送到了 canal 进程坐在的服务器, filter 在 mysql server 端就生效了。
原提问者GitHub用户leiwangouc
1 所有表的 binlog 都发送到了 canal 进程所在的服务器,由 canal 进程负责 做 filter
原回答者GitHub用户agapple
正确答案是2。根据 Canal 的实现原理,它是通过 MySQL 的 binlog 实现数据同步的,可以通过配置 canal.instance.filter.regex 来指定需要同步的表,只有匹配到该正则表达式的 binlog 事件才会被 Canal 接收并发送到 RocketMQ。因此,在 Canal 进程所在的服务器上只会接收到指定表的 binlog,而其他表的 binlog 不会发送到 Canal 进程。同时,Canal 的 Filter 功能只是对接收到的 binlog 事件进行处理,而不会影响 MySQL Server 端的 binlog 产生。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。