快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

Canal简介及配置说明

请联系QQ:1793040 索取软件

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#配置mysqlreplaction需要定义,不能和canalslaveId重复

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

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

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

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

CREATEUSERcanalIDENTIFIEDBY‘canal’;

GRANTSELECT,REPLICATIONSLAVE,REPLICATIONCLIENTON*.*TO‘canal’@‘%’;

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

FLUSHPRIVILEGES;

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

showgrantsfor‘canal’;

3.部署

1.获取发布包

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

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

wgethttps://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-x2jianghangjianghang1362013031915:03bin

drwxr-xr-x4jianghangjianghang1602013031915:03conf

drwxr-xr-x2jianghangjianghang13522013031915:03lib

drwxr-xr-x2jianghangjianghang482013031915:03logs

3.启动/停止

linux启动:

shstartup.sh

linux停止:

shstop.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.port:canal 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. linstance.properties (instance级别的配置文件,每个instance一份,/conf/实例名称/
    instance.properties)

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040