基于阿里巴巴Canal框架,TCP协议实现监听Mysql数据变化

在前一篇文章有提到过Canal的原理,所以这里就不做多叙述

Canal是伪装成Mysql的从服务,监听Mysql主服务的binlog日志,实现数据同步,所以我们需要配置开启允许binlog日志主从同步
编辑mysql的配置文件

1
vim /etc/my.cnf

添加我标记的这段配置

1
2
3
log-bin=/var/lib/mysql/mysql-bin #日志记录到指定位置
binlog-format=ROW #记录只要数据发生修改,就记录到日志中
server_id=1  #mysql主从复制的唯一id,不允许重复

需要注意点:配置一定要放在[mysqld]标签下,否则不生效


那么如何查看,是否成功开启binlog日志了

1
show variables like '%log_bin%';

为ON则成功开启binlog日志


我们也可以进入指定的日志目录下,查看日志

1
cd /var/lib/mysql

如下就是mysql自动生成的binlog日志


接下来添加canal账号,或者直接使用自己的Root账号都行

1
2
3
4
5
6
账号不能通过远端添加,只能在内部mysql添加,如果权限足的话,也可以远端添加用户

drop user 'canal'@'%';    ##注意,这里如果没有创建canal账号,则会报错,所以没有创建则直接忽略这一步
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
grant all privileges on *.* to 'canal'@'%' identified by 'canal';
flush privileges;

如下图,我这里已经添加用户成功了


进入mysql库的user表,查看刚所添加的用户的权限是否都是Y,如不是,否则接下来的操作会很不方便


接下来需要下载canal
可以在GitHub上,找到Canal的官网下载canal包,我这里目前下载是最新版本

1
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5-alpha-1/canal.deployer-1.1.5-SNAPSHOT.tar.gz

如果提示说找不到wget命令

1
yum install -y wget

如下图,已下载成功


创建一个文件夹

1
mkdir canal-server

解压canal包到指定文件夹下

1
tar -zxvf canal.deployer-1.1.5-SNAPSHOT.tar.gz -C canal-server/

解压成功


进入canal-server文件夹,解压后,基本就如下图所示了


那我们就开始来构建canalServer端,修改server的配置文件

1
2
当前目录下输入下面命令
vim conf/example/instance.properties

修改完成后,保存
返回上两级,进入bin目录,进行启动我们的canalserver端

1
./startup.sh