canal部署

1.简介

canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。

2.工作原理

canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binlog,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

3.部署

(1)下载安装canal

​ 本安装目录:/usr/local,创建一个canal目录,版本1.1.4

cd /usr/local/
mkdir canal
cd canal
//下载canal
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz
//解压
tar -zxvfcanal.deployer-1.1.4.tar.gz
(2)修改canal的配置文件
1.conf下的canal.properties文件,修改以下两项
//指定输出服务默认tcp
canal.serverMode=kafka

img

//指定kafka地址
canal.mq.servers = 192.168.1.102:9092
2.修改example/instance.properties,mysql的数据库连接地址
//mysql地址
canal.instance.master.address=192.168.1.130:3306

img

//mysql用户名密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=123456

img

# 接着上面,新增一个配置,默认数据库
canal.instance.defaultDatabaseName=canaltest
# 这个topic会自动创建
canal.mq.topic=canal-topic

img

(3)修改mysql的配置文件
//开启binlog
log-bin=/var/lib/mysql/mysql-bin
binlog-format=ROW

登录数据库以后,查看是否开启了binlog, ON表示开启了

show variables like 'log_%';

img

设置和上面instance.properties配置文件中canal的用户名和密码:

-- 创建canal用户
CREATE USER canal IDENTIFIED BY '123456';

-- 给canal用户分配查询和复制的权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO canal@'%';

--刷新权限
FLUSH PRIVILEGES;

创建测试库

ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

CREATE DATABASE `canaltest` CHARSET `utf8mb4` COLLATE `utf8mb4_unicode_ci`;
(4)启动

启动canal,在bin目录下

sh startup.sh 

启动kafka消费端:这个topic和上面example/instance.properties配置文件里面一致

./bin/kafka-console-consumer --bootstrap-server 192.168.1.102:9092 --topic canal-topic

4.主要配置文件说明

properties配置分为两部分:

canal.properties (系统根配置文件)

instance.properties (instance级别的配置文件,每个instance一份)

canal配置主要分为两部分定义:

  1. instance列表定义 (列出当前server上有多少个instance,每个instance的加载方式是spring/manager等)
  2. common参数定义,比如可以将instance.properties的公用参数,抽取放置到这里,这样每个instance启动的时候就可以共享. 【instance.properties配置定义优先级高于canal.properties】

5.多实例配置

1.canal.properties修改

//实例列表
canal.destinations = example,example1

2.修改example内instance.properties

【目标监控表】的正则表达式:
//监控全部表数据
//canal.instance.filter.regex = .*\\..* 
canal.instance.filter.regex = canaltest.test

3.新增实例example1

cd /usr/local/canal/conf
//创建文件夹
mkdir example1
//复制实例example
cp -r example/. example1

4.修改example1内instance.properties

目标监控表】的正则表达式:
//监控全部表数据
//canal.instance.filter.regex = .*\\..* 
canal.instance.filter.regex = canaltest.test1
//kafka的topic
canal.mq.topic=canal-topic1

5.重启服务

cd /usr/local/canal/bin
//重启服务
sh restart.sh

6.HA

​ HA基于zookeeper

​ 启动zookeeper集群

​ canal的HA部署环境:192.168.1.107,192.168.1.108

​ zookeeper集群环境:flink01:2181,flink02:2181,flink03:2181

1.修改canal.properties(两个节点一致)

//添加zookeeper地址
canal.zkServers =flink01:2181,flink02:2181,flink03:2181
//将file-instance.xml注释,解开default-instance.xml注释
#canal.instance.global.spring.xml = classpath:spring/file-instance.xml
canal.instance.global.spring.xml = classpath:spring/default-instance.xml

2.修改conf/example目录下instance.properties

//107
canal.instance.mysql.slaveId = 0   //不能与mysql的server-id重复
//108
canal.instance.mysql.slaveId = 1   //不能与mysql的server-id重复

3.重启服务(两个节点一致)

cd /usr/local/canal/bin
//重启服务
sh restart.sh

7.参考网址

canal的HA搭建,可视化搭建:https://www.cnblogs.com/shengyang17/p/10834781.html

canal的多实例搭建:http://www.xiaoruyi.cn/url/detail_28wzQboZs.html

canal配置详解:https://blog.csdn.net/qq_26502245/article/details/90445323

canal配置文件介绍:https://www.cnblogs.com/eason-d/p/9300754.html

canal官方文档:https://github.com/alibaba/canal/wiki/AdminGuide

8.Canal和Zookeeper对应节点的关系

/otter/canal:canal的根目录
/otter/canal/cluster:整个canal server的集群列表
/otter/canal/destinations:destination的根目录
/otter/canal/destinations/example/running:服务端当前正在提供服务的running节点
/otter/canal/destinations/example/cluster:针对某个destination的工作集群列表
/otter/canal/destinations/example/1001/running:客户端当前正在读取的running节点
/otter/canal/destinations/example/1001/cluster:针对某个destination的客户端列表
/otter/canal/destinations/example/1001/cursor:客户端读取的position信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值