1.Canal同步介绍
项目地址:
https://github.com/alibaba/canal
组件图:

2.MySQL端配置
canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,建议配置binlog模式为row.
1 | [mysqld] |
canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限.针对已有的账户可直接通过grant
1 | CREATE USER canal IDENTIFIED BY 'canal'; |
3.Canal Server端配置
canal server端为解析bin-log日志,并将解析结果格式化发给canal client端,server端不需要修改,只需要部署配置即可。下载 canal.deployer-1.0.17.tar.gz包.
instance配置,打开conf/example/instance.properties配置文件:
1 | ## mysql serverId |
说明:
canal.instance.connectionCharset 代表数据库的编码方式对应到java中的编码类型,比如UTF-8,GBK , ISO-8859-1
如果系统是1个cpu,需要将canal.instance.parser.parallel设置为false.
canal server配置:打开conf/canal.properties配置文件:
1 | canal.id = 1 |
启动server
1 | sh bin/startup.sh |
关闭server
1 | sh bin/stop.sh |
日志查看:
1 | tail -f logs/canal/canal.log |
4.Canal Client端
canal client端为使用数据同步者自己开发的程序,在client中需要针对server端发送过来的不同日志类型进行数据的处理。开发步骤如下:
1.添加项目依赖
1 | <dependency> |
2.Client代码开发
1 | // 创建链接 |
5.Canal适配器
canal 1.1.1版本之后, 增加客户端数据落地的适配及启动功能, 目前支持功能:
客户端启动器
同步管理REST接口
日志适配器, 作为DEMO
关系型数据库的数据同步(表对表同步), ETL功能
HBase的数据同步(表对表同步), ETL功能
(后续支持) ElasticSearch多表数据同步,ETL功能
具体使用方法见:https://github.com/alibaba/canal/wiki/ClientAdapter
6.数据同步中间件比较
canal,otter,yugong,datax比较:http://www.importnew.com/22294.html