Canal简介及配置说明

来源:互联网 发布:mac 免费vnc客户端 编辑:程序博客网 时间:2024/06/03 19:00

1.简介

canal是纯Java开发的,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql

原理相对比较简单:

  1. 1.      canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议

  2. 2.      mysql master收到dump请求,开始推送binary logslave(也就是canal)

  3. 3.      canal解析binary log对象(原始为byte)

2.mysql要求

   a. 目前canal支持mysql 5.5版本以下,对mysql5.6暂不支持,(mysql4.x版本没有经过严格测试,理论上是可以兼容)

   b. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysqlbinlog写入功能,并且配置binlog模式为row.

 log-bin=mysql-bin #添加这一行就ok    

 binlog-format=ROW #选择row模式    

 server_id=1 #配置mysql replaction需要定义,不能和canalslaveId重复    

 

  下面两个配置强烈建议配置,这样可以减小binlog的大小,忽略不需要关注的库的binlog

  binlog-do-db = epg #配置需要同步的库

  binlog-ignore-db = mysql #配置不需要同步的库

   c.  canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限 

CREATE USER canal IDENTIFIED BY 'canal';      

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';

GRANT SELECT,REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO canal@localhost ;    

FLUSH PRIVILEGES;   

     针对已有的账户可通过grants查询权限:

show grants for 'canal';   

 

3.部署

1. 获取发布包

访问:https://github.com/alibaba/canal/releases,会列出所有历史的发布版本包

下载方式,比如以1.0.17版本为例子: 

wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz  

下载到的文件,名字不对,需要重命名,命令如下:

Mv 下载的文件 canal.deployer-1.0.17.tar.gz

 

2. 目录结构

解压缩发布包后,可得如下目录结构:

drwxr-xr-x 2 jianghang jianghang  136 2013-03-19 15:03 bin  

drwxr-xr-x 4 jianghang jianghang  160 2013-03-19 15:03 conf  

drwxr-xr-x 2 jianghang jianghang 1352 2013-03-19 15:03 lib  

drwxr-xr-x 2 jianghang jianghang   48 2013-03-19 15:03 logs  

3. 启动/停止

   linux启动 :   

sh startup.sh   

   linux停止:

sh stop.sh  

 

  几点注意: 

1.    linux启动完成后,会在bin目录下生成canal.pidstop.sh会读取canal.pid进行进程关闭

2.    startup.sh默认读取系统环境变量中的which java获得JAVA执行路径,需要设置PATH=$JAVA_HOME/bin环境变量

3.    canal的内存设置在start.sh中第7577行,(建议将7577行的内存设置值保持相同)如下:

 

4.配置

properties配置分为两部分:

  • canal.properties  (系统根配置文件,/conf/canal.properties)

需要关注的配置项如下:

  1. 1.    canal.portcanal server提供socket服务的端口,建议配置32121

  2. 2.    canal.instance.detecting.enable是否开启心跳检查,建议配置true

  3. 3.    canal.instance.detecting.sql心跳检查sql建议配置select 1 from 目标库.目标表

  4. 4.    canal.destinations当前server上部署的instance列表,比如需要获取epg库的表更新则可以创建一个名为epginstance,则配置canal.destinations = epg,同时需要在/conf/下新建epg目录,并在其中创建instance.properties即可

  5. l  instance.properties  (instance级别的配置文件,每个instance一份,/conf/实例名称/ instance.properties)