canal单库单表同步

canal单库单表同步
  接下来,我会写两篇数据库同步的文章,本来想合二为一,但想着毕竟是两种实现方式,还是拆开吧。11月中旬领导叫研究的。
  一个是canal,一个是使用GTID。大家看下来可能会觉得这博客有点随意,因为首先canal在运维层面上,做单库多表同步配置非常麻烦,但开发程序做比较容易,其次这个还没部署到生产,开发还在调试程序验证阶段,等有机会上了生产再补充下内容。
  
一、背景引入
  话说月尾到月初这段时间,业主方要从系统上导出报表,貌似是担心那段时间报表查询影响生产数据库的正常使用,所以就想建多个数据库,报表查询用另一个数据库,不要影响生产的数据库。
  生产环境的数据库是阿里云RDS mysql 5.7,测试的时候是买了一台临时RDS,从生产RDS把数据导了一份过去(模拟生产数据库),而另一台数据库是自建 mysql 5.7
  当时领导一直叫我下载最新版进行测试,但发现最新版1.1.7一直启动报错(下载地址:https://github.com/alibaba/canal/releases

   后来换成1.1.4版本就正常运行了。

二、部署和测试

基本按照篇文档去部署,没太大问题,有问题可以留言给我~~
注意点:
(1)用了1.1.4的canal安装包后,需要把mysql驱动从
mysql-connector-java-5.1.47.jar,换成 mysql-connector-java-5.1.49.jar
(2)canal 的 adapter和deployer都要使用到,否则数据同步测试会有问题,像我一开始就傻傻地,以为只需要adapter,一直测不出想要的效果。
 
测试:
(1)在源rds测试数据库插入数据

(2)在目标数据库能查到同步过来的数据(图就不贴了,意义不大)

(3)查看canal同步日志

可以发现,删除和插入都监听到

 

 

posted @ 2023-01-24 23:05  windysai  阅读(251)  评论(0编辑  收藏  举报