什么是Canal
Canal是阿里巴巴旗下的一款开源项目, 基于java开发. Canal是基于mysql的主从同步来实现的.
github地址: https://github.com/alibaba/canal
Canal把自己伪装成MySQL的一个slave节点, 从而监听master的binary log变化. 再把得到的变化信息通知给Canal的客户端, 进而完成对其他数据库的同步.
引入依赖
第三方开源的canal-starter
地址: https://github.com/NormanGyllenhaal/canal-client
<dependency>
<groupId>top.javatool</groupId>
<artifactId>canal-spring-boot-starter</artifactId>
<version>1.2.1-RELEASE</version>
</dependency>
配置文件
canal:
destination: zhouyu # canal实例名称, 要和canal-server运行时设置的destination一致
server: 192.168.0.145:11111 # canal地址
实体类修改
同步缓存
import com.example.mybatisplusdemo.vo.Item;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;
@Component
@CanalTable("tb_item")
public class ItemHandler implements EntryHandler<Item> {
@Override
public void insert(Item item) {
// 更新缓存
}
@Override
public void update(Item before, Item after) {
// 更新缓存
}
@Override
public void delete(Item item) {
// 更新缓存
}
}