Canal

        canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

1.canal 工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

2.安装/配置MySQL

1.安装mysql

        已安装略过此步骤,未安装,可以参考linux 安装MySQL-CSDN博客进行安装。

2.开启binlog日志

vi /etc/my.cnf

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 行 模式
#binlog-do-db 根据自己的情况进行修改,指定具体要同步的数据库,如果不配置
则表示所有数据库均开启 Binlog
#binlog-do-db=demo
#binlog-do-db=dmp

注意:需要重启MySQL实例使配置生效,执行命令:sudo systemctl restart mysqld

3.新建canal账号并授权

create user canal@'%' identified with mysql_native_password by 'wsx-123';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

4.查看binlog日志

1)查看binlog模式:show variables like '%binlog_format%';
 
2)查看binlog日志文件列表:show binary logs;


3)查看当前正在写入的binlog文件: show master status;

 3.安装Canal

3.1下载 canal

wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.adapter-1.1.6.tar.gz

3.2 解压canal

mkdir ~/opt/canal

tar -zxf canal.deployer-1.1.6.tar.gz  -C ~/opt/canal

3.3  修改canal 的基本通用配置

vi conf/canal.properties

#canal常用端口
canal.admin.port = 11110
canal.port = 11111
canal.metrics.pull.port = 11112

# 输出 model,默认 tcp,改为输出到: kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = tcp

# 指定实例,多个实例使用逗号分隔: canal.destinations = example1,example2
#如果需要多个实例处理不同的MySQL数据的话,直接拷贝出多个conf/example,并对其重新命名,命名和配置文件中指定的名称一致即可
canal.destinations = example

3.4 修改canal 实例配置

vi conf/example/instance.properties

## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0

# mysql数据库地址:ip+端口
canal.instance.master.address=127.0.0.1:3306 
 
# mysql数据库用户名和密码 
canal.instance.dbUsername=canal 
canal.instance.dbPassword=wsx-123


#代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1
canal.instance.connectionCharset = UTF-8
 
# 指定库和表,这里的 .* 表示 canal.instance.master.address 下面的所有数据库
canal.instance.filter.regex=.*\\..*

#指定具体数据库和该库所有表
#canal.instance.defaultDatabaseName=demo
#table regex
#canal.instance.filter.regex = demo\\..*

3.5 启动canal

sh bin/startup.sh

        首次运行成功之后,会在实例目录下生成meta.dat元数据文件,里面包含有mysql的连接信息、binlog文件及position位点信息。

vi conf/example/meta.dat

3.6 验证启动成功

tail -f logs/example/example.log

4.实时监控

4.1 canal 客户端

        canal 特别设计了 client-server 模式,交互协议使用 protobuf 3.0 , client 端可采用不同语言实现不同的消费逻辑。

        canal java 客户端: ClientExample · alibaba/canal Wiki · GitHub

4.2 MQ客户端

        canal 作为 MySQL binlog 增量获取和解析工具,可将变更记录投递到 MQ 系统中,比如 Kafka/RocketMQ。

        参考文档: Canal Kafka/RocketMQ QuickStart

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37559973

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值