博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Canal简介及配置说明
阅读量:6709 次
发布时间:2019-06-25

本文共 2582 字,大约阅读时间需要 8 分钟。

  hot3.png

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.

 [mysqld]    

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 ;    

FLUSH PRIVILEGES;   

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

show grants for 'canal';   

 

3.部署

1. 获取发布包

访问:,会列出所有历史的发布版本包

下载方式,比如以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)

需要关注的配置项如下:

  1. 1.    canal.instance.mysql.slaveIdmysql集群配置中的serverId概念,需要保证在当前mysql集群中id唯一

  2. 2.    canal.instance.master.addressmysql主库链接地址,ip:端口,如:127.0.0.1:3306

  3. 3.    canal.instance.defaultDatabaseNamemysql链接时默认数据库,建议设置成需要同步的库名

  4. 4.    canal.instance.connectionCharsetmysql 数据解析编码,建议和数据库编码方式保持一致

  5. 5.    canal.instance.filter.regexmysql 数据解析关注的表,Perl正则表达式。多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\),例如只关注mysql库里的user表的更新,则配置为mysql.user

 

转载于:https://my.oschina.net/zmf/blog/366498

你可能感兴趣的文章
MySQL线程池
查看>>
搞软件的一直会被人叫去修电脑 哎~ 发个安装方法会的可以自己装。
查看>>
Java并发编程实战
查看>>
Android App整体架构设计的思考
查看>>
2.NIO
查看>>
《Layer弹窗加强版》
查看>>
JSP内置对象(9种)
查看>>
mysql数据库重复记录过滤删除解决
查看>>
Maven的eclipse插件
查看>>
Java 二进制
查看>>
懒得理病毒的免疫系统能救命
查看>>
Java内存分析 --- 虚拟机运行时数据区
查看>>
如何添加windows 系统的逻辑磁盘并设置盘符
查看>>
无线网络多种加密模式比拼
查看>>
浅谈Ddos******与防御
查看>>
微软开源.NET Framework,实现跨平台
查看>>
zabbix安装(超详细)
查看>>
Nginx + keepalived
查看>>
Java学习进度(2013.03.12)—Struts2学习二
查看>>
网络实验环境搭建--4.IOL/IOU桥接与抓包
查看>>