开发者社区> 问答> 正文

请教下,如果有个GTID事务不想同步,在otter中如何跳过呢?

环境信息

canal version 1.1.2 mysql version 5.7.23

问题描述

在mysql主从同步中,如果想跳过某个GTID事务,可以通过在主库上重做个空事务跳过。那在OTTER上如何操作可以跳过某个GTID事务的同步呢?

原提问者GitHub用户cnodin

展开
收起
古拉古拉 2023-05-08 14:18:46 111 0
2 条回答
写回答
取消 提交回答
  • 需要otter写一个过滤代码,识别一下不需要同步的数据忽略掉,没有直接基于GTID忽略的能力

    原回答者GitHub用户agapple

    2023-05-09 17:55:59
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    在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服务才能生效。

    2023-05-08 15:23:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载