当前位置:   article > 正文

30分钟快速掌握Canal整合RabbitMQ(极简配置)_canal rabbitmq

canal rabbitmq

前言

快速使用canal

一、canal原理

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

二、mysql开启binlog(mysql版本:5.7)

修改配置文件

windows C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
linux /etc/my.cnf

# 开启 binlog
log-bin=mysql-bin
# 日志格式 
binlog_format=row 
# 指定数据库,若不指定,则所有数据库 binlog 都生效
# binlog-do-db=dbname 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

重启 mysql

略。

查看是否已开启 binlog

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

授权

mysql> grant all privileges on *.* to '用户名'@'ip' identified by '密码';
mysql> flush privileges;
  • 1
  • 2

三、安装服务端canal.deployer(canal版本:1.1.5,linux:CentOS7)

下载发行版

canal.deployer-1.1.5.tar.gz

解压

 tar zxvf canal.deployer-1.1.5.tar.gz
  • 1

端口

firewall-cmd --zone=public --add-port=11110/tcp --permanent        
firewall-cmd --zone=public --add-port=11111/tcp --permanent 
firewall-cmd --zone=public --add-port=11112/tcp --permanent 
firewall-cmd --reload
  • 1
  • 2
  • 3
  • 4

四、部署RabbitMQ服务端

Linux安装RabbitMQ

五、修改配置文件

根配置文件 conf/canal.properties

# 指定模式
canal.serverMode = rabbitMQ
# 指定实例,多个实例使用逗号分隔: canal.destinations = example1,example2
canal.destinations = example 

# rabbitmq 服务端 ip
rabbitmq.host = 127.0.0.1
# rabbitmq 虚拟主机 
rabbitmq.virtual.host = / 
# rabbitmq 交换机  
rabbitmq.exchange = xxx
# rabbitmq 用户名
rabbitmq.username = xxx
# rabbitmq 密码
rabbitmq.password = xxx
rabbitmq.deliveryMode =
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

实例配置文件 conf/example/instance.properties

配置 slaveId,自定义,不等于 mysql 的 server Id 即可
canal.instance.mysql.slaveId=10 

# 数据库地址 
canal.instance.master.address=ip:port 
 
# 数据库用户名和密码 
canal.instance.dbUsername=xxx 
canal.instance.dbPassword=xxx
	
# 指定库和表
canal.instance.filter.regex=.*\\..* // 这里的 .* 表示 canal.instance.master.address 下面的所有数据库
		
# mq config
# rabbitmq 的 routing key
canal.mq.topic=xxx
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

六、启动canal

sh bin/startup.sh	
  • 1

七、处理消息

当数据变更时,canal会向rabbitmq发送变更数据,消息为json格式。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号