点击上方“南客先生”,选择“设为星标”
做积极的人,而不是积极废人


一、 Canal介绍
二、 应用场景
三、 Canal环境搭建
四、 注意点
五、 Java实现canal数据同步
六、 测试效果
Canal介绍
Canal是阿里旗下的一个开源的数据同步工具,使其可以在微服务项目中降低程序的耦合度,达到提升效率的工具。下面看下它的介绍:
*应用场景
在微服务项目大部分功能中,我们采取了服务调用获取相应需要的数据,这样耦合度高,效率相对较低,目前我采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与登录人数,我们只需把会员表同步到统计库中,实现本地统计就可以了,这样效率更高,耦合度更低,Canal就是一个很好的数据库同步工具。canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL。
*1、Canal环境搭建
canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能
开启mysql服务:
service mysql start (或者 systemctl start mysqld.service)
1)检查binlog功能是否有开启
1 mysql> show variables like 'log_bin';
2 +---------------+-------+
3 | Variable_name | Value |4 +---------------+-------+5 | log_bin | OFF |
6 +---------------+-------+
7 1 row in set (0.00 sec)
2)如果显示状态为OFF表示该功能未开启,开启binlog功能
1,修改 mysql 的配置文件 my.cnf
1vi /etc/my.cnf
2追加内容:
3log-bin=mysql-bin #binlog文件名
4binlog_format=ROW #选择row模式
5server_id=1 #mysql实例id,不能和canal的slaveId重复
2,重启 mysql:
service mysql restart
3,登录 mysql 客户端,查看 log_bin 变量
1 mysql> show variables like 'log_bin';
2 +---------------+-------+
3 | Variable_name | Value |4 +---------------+-------+5 | log_bin | NO |
6 +---------------+-------+
7 1 row in set (0.00 sec)