Canal QuickStart

Canal介绍

      基于mysql数据库binlog的增量订阅&消费

 

QuickStart

几点说明:(mysql初始化)

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

1.[mysqld]
2.log-bin=mysql-bin #添加这一行就ok
3.binlog-format=ROW #选择row模式
4.server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复

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

1.CREATE USER canal IDENTIFIED BY 'canal';
2.GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
3.-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
4.FLUSH PRIVILEGES;

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

1.show grants for 'canal'  

启动步骤:

1.  下载canal

下载部署包

1.wget http://canal4mysql.googlecode.com/files/canal.deployer-1.0.0.tar.gz  

or 

自己编译 

1.git clone git@github.com:otter-projects/canal.git
2.cd canal;
3.mvn clean install -Dmaven.test.skip -Denv=release

编译完成后,会在根目录下产生target/canal.deployer-$version.tar.gz 

2.  解压缩

1.mkdir /tmp/canal
2.tar zxvf canal.deployer-1.0.0.tar.gz  -C /tmp/canal

解压完成后,进入/tmp/canal目录,可以看到如下结构:

1.drwxr-xr-x 2 jianghang jianghang  136 2013-02-05 21:51 bin
2.drwxr-xr-x 4 jianghang jianghang  160 2013-02-05 21:51 conf
3.drwxr-xr-x 2 jianghang jianghang 1.3K 2013-02-05 21:51 lib
4.drwxr-xr-x 2 jianghang jianghang   48 2013-02-05 21:29 logs  

3.  配置修改

 

公用参数:   

1.vi conf/canal.properties  
1.#################################################
2.#########               common argument         #############
3.#################################################
4.canal.id= 1
5.canal.address=
6.canal.port= 11111
7.canal.zkServers=
8.# flush data to zk
9.canal.zookeeper.flush.period = 1000
10.## memory store RingBuffer size, should be Math.pow(2,n)
11.canal.instance.memory.buffer.size = 32768
12.
13.## detecing config
14.canal.instance.detecting.enable = false
15.canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now()
16.canal.instance.detecting.interval.time = 3
17.canal.instance.detecting.retry.threshold = 3
18.canal.instance.detecting.heartbeatHaEnable = false
19.
20.# support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery
21.canal.instance.transactionn.size =  1024
22.
23.# network config
24.canal.instance.network.receiveBufferSize = 16384
25.canal.instance.network.sendBufferSize = 16384
26.canal.instance.network.soTimeout = 30
27.
28.#################################################
29.#########               destinations            #############
30.#################################################
31.canal.destinations= example
32.
33.canal.instance.global.mode = spring
34.canal.instance.global.lazy = true  ##修改为false,代表立马启动
35.#canal.instance.global.manager.address = 127.0.0.1:1099
36.canal.instance.global.spring.xml = classpath:spring/memory-instance.xml
37.#canal.instance.global.spring.xml = classpath:spring/default-instance.xml

应用参数:

1.vi conf/example/instance.properties  

1.#################################################
2.## mysql serverId
3.canal.instance.mysql.slaveId = 1234
4.
5.# position info
6.canal.instance.master.address = 127.0.0.1:3306 #改成自己的数据库地址
7.canal.instance.master.journal.name =
8.canal.instance.master.position =
9.canal.instance.master.timestamp =
10.
11.#canal.instance.standby.address =
12.#canal.instance.standby.journal.name =
13.#canal.instance.standby.position =
14.#canal.instance.standby.timestamp =
15.
16.# username/password
17.canal.instance.dbUsername = retl  #改成自己的数据库信息
18.canal.instance.dbPassword = retl  #改成自己的数据库信息
19.canal.instance.defaultDatabaseName =   #改成自己的数据库信息
20.canal.instance.connectionCharsetNumber = 33  #改成自己的数据库信息
21.canal.instance.connectionCharset = UTF-8  #改成自己的数据库信息
22.
23.# table regex
24.canal.instance.filter.regex = .*\\..*
25.
26.#################################################

说明:

  • canal.instance.connectionCharset 代表数据库的编码方式对应到java中的编码类型,比如UTF-8,GBK , ISO-8859-1
  • canal.instance.connectionCharsetNumber 代表数据库的编码方式对应mysql中的唯一id,详细的映射关系可查看:com.mysql.jdbc.CharsetMapping.INDEX_TO_CHARSET
    针对常见的编码:
    utf-8  <=>  33
    gb2312 <=> 24
    gbk <=> 28

4.   准备启动

1.sh bin/startup.sh  

5.  查看日志

1.vi logs/canal/canal.log  

1.2013-02-05 22:45:27.967 [main] INFO  com.alibaba.otter.canal.deployer.CanalLauncher - ## start the canal server.
2.2013-02-05 22:45:28.113 [main] INFO  com.alibaba.otter.canal.deployer.CanalController - ## start the canal server[10.1.29.120:11111]
3.2013-02-05 22:45:28.210 [main] INFO  com.alibaba.otter.canal.deployer.CanalLauncher - ## the canal server is running now ......

具体instance的日志:

1.vi logs/example/example.log  

1.2013-02-05 22:50:45.636 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [canal.properties]
2.2013-02-05 22:50:45.641 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [example/instance.properties]
3.2013-02-05 22:50:45.803 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for 1-example
4.2013-02-05 22:50:45.810 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start successful....

6.关闭

时间: 2024-11-08 19:12:54

Canal QuickStart的相关文章

Canal Client API

1.  首先需要先启动canal server,可参见:Canal Server的QuickStart 2.  运行canal client,可参见:canal client的ClientExample   如何下载 1.  如果是maven用户,可配置mvn dependency 1.<dependency> 2. <groupId>com.alibaba.otter</groupId> 3. <artifactId>canal.client</ar

Canal AdminGuide

背景    先前开源了一个开源项目: [阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费]     本文主要是介绍一下如何部署&使用   环境要求 1. 操作系统     a.  纯java开发,windows/linux均可支持     b.  jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本.    2. mysql要求    a. 目前canal支持mysql 5.5版本以下,对mysql5.6暂不支持,(mysql4.x版本没有经过严

Canal ClientExample

Canal介绍       基于mysql数据库binlog的增量订阅&消费   ClientExample 依赖配置:(目前暂未正式发布到mvn仓库,所以需要各位下载canal源码后手工执行下mvn clean install -Dmaven.test.skip) 1.<dependency> 2. <groupId>com.alibaba.otter</groupId> 3. <artifactId>canal.client</artifa

初体验JBossESB 及 部署使用 Hello World QuickStart

http://yulimin.javaeye.com/blog/52980 关键字:   ESB SOA     初体验JBossESB 及 部署使用 Hello World QuickStart1.下载 JBoss 4.0.5 GA 及 JBossESB 4.0 CR2 并解压,如果是src包的话,进入JBossESB目录运行ant install %JBoss_HOME% : C:/OpenSource/JBoss/4.0 %JBossESB_HOME% : C:/OpenSource/JB

Alibaba Canal Manager Model 配置管理实现

Alibaba Canal Manager Model 配置管理实现 Alibaba Canal 用于增量订阅消费 mysql 数据库 binlog 日志,详细介绍请见 alibaba/canal. 其中 Server 端配置有两种管理方式: Spring 和 Manager.其中 Spring 方式是基于spring xml + properties 进行定义构建 spring 配置, Manager 方式则可以对接 Web console/manager 系统.本文主要记录一下 Manage

canal DevGuide

背景    先前开源了一个开源项目: [阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费]     本文主要是介绍一下如何给canal贡献代码,介绍其设计思路和扩展方式   设计  说明: server代表一个canal运行实例,对应于一个jvm instance对应于一个数据队列  (1个server对应1..n个instance) instance下的子模块: eventParser (数据源接入,模拟slave协议和master进行交互,协议解析) eventSink

Canal BinlogChange(mysql5.6)

背景 先前开源了一个开源项目: [阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费]    本文主要是介绍一下canal1.0.3支持mysql5.6协议上的变化.    协议变化 1.   binlog checksum     mysql5.6之后,支持在binlog对象中增加checksum信息,比如CRC32协议.   其原理主要是在原先binlog的末尾新增了4个byte,写入一个crc32的校验值.      对应参数说明: http://dev.mysql.co

谈谈对Canal(增量数据订阅与消费)的理解

概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB). 起源:早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元. 基于日志增量订阅&消

Canal BinlogChange(mariadb5/10)

背景 先前开源了一个开源项目: [阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费]  本文主要是介绍一下canal支持mariadb协议上的变化.    协议变化 mariadb5.5 mariadb5.5主要是基于mysql5.5的原型,类型定义基本没啥变化,大体上都保持兼容 主要的变化: 1. QueryLogEvent增加了status变量.     Q_HRNOW  用于记录毫秒的精度,枚举值下标为128 协议解析的时候,需要处理Q_HRNOW,需要跳过3字节的数据