mysql 开源~canal维护相关问题

一 简介:咱们来讨论下canal的一些技巧

二 场景

场景1 canal过滤指定库后,后端java调用读取相关数据时候出现大量的空事务,为何会出现空事务呢,空事务是由于配置了指定的过滤规则,导致了其他库的事务被过滤掉,但是存在大量的begin commit,不利于分析

解决方案 :1 canal的核心配置为  canal.instance.global.spring.xml = classpath:spring/file-instance.xml

2 修改 file-instance 增加属性

<bean id="eventSink" class="com.alibaba.otter.canal.sink.entry.EntryEventSink">

<property name="eventStore" ref="eventStore" />
                       <property name="filterEmtryTransactionEntry" value="false"/>//新添加的属性
                      </bean>

3 重启服务

4 研发进行再次观察

场景2   在多canal环境下的同步信息同步问题

场景问题 当一个canal挂掉后,另一个canal是无法应用元数据提供服务的

解决方案: 将canal设置元数据保留在ZK上,这样在另一个canal提供服务的时候可读取最新点进行消费

canal配置文件配置

canal.zkServers=zk地址
            canal.instance.global.spring.xml = classpath:spring/default-instance.xml

场景3  利用pt-osc针对大表进行ddl操作,导致canal同步报错

解决方案  手动创建new新表,然后canal就会通过,再手动删除new表即可

上一篇:2016年12月30日 星期五 --出埃及记 Exodus 21:25


下一篇:SpringBoot读取Resource下文件的几种方式