canal-基于mysql的增量数据同步安装配置

2018年5月24日 zhangdd 40 0 评论 linux运维

canal-基于mysql的增量数据同步安装配置 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。 ps. 目前内部版本已经支持mysql和oracle部分版本的日志解析,当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48)

mysql主从同步工作原理

从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。

canal的工作原理:

原理相对比较简单: canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql master收到dump请求,开始推送binary log给slave(也就是canal) canal解析binary log对象(原始为byte流)

canal安装

1.下载解压很据自己需求选择版本 地址:https://github.com/alibaba/canal/releases 2.创建mysql的canal用户

mysql> CREATE USER ‘canal’@’%’ IDENTIFIED BY ‘canal’;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘canal’@’%’ WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

3、修改canal配置文件

root@mysql04 ~]# vi  canal/conf/example/instance.properties ################################################# ## mysql serverId canal.instance.mysql.slaveId=0 # position info canal.instance.master.address=127.0.0.1:3306     ##这里改成自己的数据库地址,本机可以不动 canal.instance.master.journal.name= canal.instance.master.position= canal.instance.master.timestamp= # table meta tsdb info canal.instance.tsdb.enable=true canal.instance.tsdb.dir=${canal.file.data.dir:../conf}/${canal.instance.destination:} canal.instance.tsdb.url=jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL; #canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb canal.instance.tsdb.dbUsername=canal canal.instance.tsdb.dbPassword=canal #canal.instance.standby.address = #canal.instance.standby.journal.name = #canal.instance.standby.position = #canal.instance.standby.timestamp = # username/password canal.instance.dbUsername=canal    ###改成自己数据库用户 canal.instance.dbPassword=canal    ###改成自己数据库密码 canal.instance.defaultDatabaseName=databasename ###改成自己数据库 canal.instance.connectionCharset=UTF-8   ###改成自己数据库编码格式 # table regex canal.instance.filter.regex=.*\\..* # table black regex canal.instance.filter.black.regex= #################################################

4.启动关闭canal /自己安装路径/canal/bin/startup.sh /自己安装路径canal/bin/stop.sh

本文出自张佃栋de博客,转载时请注明出处及相应链接。

本文永久链接: https://blog.zhangdd.com/blog/48/

最后编辑: 2018/05/24

©著作权归作者所有