当前位置: 代码迷 >> 综合 >> canal 入门介绍
  详细解决方案

canal 入门介绍

热度:27   发布时间:2024-01-30 06:03:43.0

目录

1 canal简介

        1.1 canal是什么

        1.2 canal有什么用

 2 canal搭建部署

       2.1 下载

       2.2 安装

       2.3 配置

       2.4启动


1 canal简介

        1.1 canal是什么

                       canal是阿里巴巴开源的一款 基于DB数据增量变更的日志解析工具,简单点就是能监控所有DB的变更操作。

例如:你往一张表插入一条数据成功,如果你使用了canal,那么你在canal-client中就立马会知道有这么一条数据插入了。

        1.2 canal有什么用

                        阿里巴巴最开始是用来作为跨机房数据同步的,但很多小伙伴可能会说这么高大上的操作,估计没我什么事。那这么想就错了,实际上他还能做很多其他的事情。

例如:

  •   监控数据变更,将变动数据通知更新Elasticsearch搜索引擎。
  •   监控业务数据变更(库,表),然后针对这个变更进行一系列的业务操作,比如:充值赠送,用户充值成功后,赠送一些其他的小东西,这个时候用他就很适合,没必要引入特别复杂的机制去维护一致性,也不需要加入到充值代码中使业务变的不单一,能够很好的解耦。
  •    内部不同系统之间的数据同步,不需要将数据同步方法写入业务代码,还能保证最终一致。

 2 canal搭建部署

       2.1 下载

                    github下载地址:https://github.com/alibaba/canal   当前最新版本1.15 ,当前基本处于不怎么更新状态,但没关系,不更新也能用,现有功能足够了。

                     如果准备独立部署可以下载:https://github.com/alibaba/canal/releases    canal.deployer-1.1.4.tar.gz    独立安装包,放入linux环境目录解压即可。

       2.2 安装

                      将源码包下载到你需要安装的地址,然后解压出来:tar -xvf canal.deployer-1.1.4.tar.gz

这时候可以看到4个目录:bin(执行程序),conf(配置文件),logs(日志文件),lib(依赖jar)

      2.3 配置

                     这是一份集群式,数据写入zk的配置,一般都是使用此模式,下篇会详细介绍各种模式和具体配置细节。 

                     打开config-> canal.properties 将其中:

                      canal.ip=自己ip 192.168.1.1

                      canal.register.ip=自己ip  192.168.1.1

                      canal.zkServers=你的zk集群,多个以逗号隔开 例如  :192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

                      canal.destinations=example(目标实例,自己随便写,但要和之后的配置文件目录对应)

                      canal.instance.global.spring.xml = classpath:spring/default-instance.xml

                      mq,kafka相关的都可以注释掉。

                      目标实例配置:每一个目标实例对应一个对DB的监控,比如监控2个不同的DB就需要配置2个。

                      打开config->example(自己配的目标实例目录)->instance.properties

                      canal.instance.master.address=db地址  192.168.1.110:3306

                     canal.instance.mysql.slaveId=随便设置一个,别和其他集群重复 比如机器ip

                      canal.instance.dbUsername=db账号

                      canal.instance.dbPassword=db密码

                      canal.instance.defaultDatabaseName=默认监控库名

                      canal.instance.filter.regex=.*\\..*   监控什么库,什么表。具体表达式说明 配置文件备注上有,仔细看。

                       简单说明下:.*\\..* 所有库,所有表。  a.test 表示a库的test表,多个表   a.test,a.test2。a\\.t_.* a库t_开头的所有表

                       所有配置完成。

      2.4启动

                        进入目录  bin,执行 ./startup.sh  然后查看启动日志:logs/canal/canal.log 和你的实例日志:logs/example/example.log.

                        发现canal.log出现日志:

the canal server is running now ......   正在启动
com.alibaba.otter.canal.deployer.CanalController - auto notify start example successful.  example实例启动成功,即可。

                        如果有错误,根据错误日志解决问题并重新启动。重启前需要先进入bin目录执行./stop.sh

                        集群的话就是在其他机器上在按照相同的方式部署即可。一般2台就够了。