环境信息
canal version 1.1.2 mysql version 5.7.23
问题描述
在mysql主从同步中,如果想跳过某个GTID事务,可以通过在主库上重做个空事务跳过。那在OTTER上如何操作可以跳过某个GTID事务的同步呢?
原提问者GitHub用户cnodin
需要otter写一个过滤代码,识别一下不需要同步的数据忽略掉,没有直接基于GTID忽略的能力
原回答者GitHub用户agapple
在Canal中,可以通过canal.instance.filter.transaction_blacklist配置项来过滤不想同步的事务。这个配置项可以用来过滤某个特定的事务或者一段连续的事务。可以在Canal的配置文件中添加如下配置:
canal.instance.filter.transaction_blacklist=1:12345,2:23456-34567 这里的配置表示过滤掉GTID为1:12345和2:23456-34567的事务,不进行同步。具体的格式为GTID:pos,其中GTID表示事务的全局事务ID,pos表示事务的位置信息,也就是可以用Binlog中的位点表示。如果不知道某个事务的GTID和位点信息,可以在MySQL中使用以下命令查询:
SELECT @@GLOBAL.gtid_executed; SHOW MASTER STATUS; 其中第一条命令可以查询到全部的GTID信息,第二条命令可以查询到Binlog的位点信息。将这些信息填写到canal.instance.filter.transaction_blacklist配置项中即可过滤掉不想同步的事务。需要注意的是,这个配置项是在Canal中生效的,因此需要重启Canal服务才能生效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。