一 简介:咱们来讨论下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表即可