开启MySQL的binlog日志

Mysql 的 binlog 日志作用是用来记录 mysql 内部增删等对 mysql 数据库有更新的内容的 记录(对数据库的改动),对数据库的查询 select 或 show 等不会被 binlog 日志记录;主要用于数据库的主从复制以及增量恢复。

(1)修改/etc/my.cnf,在里面添加如下内容
log-bin=/var/lib/mysql/mysql-bin 【binlog 日志存放路径】
binlog-format=ROW 【日志中会记录成每一行行数据被修改的形式】
server_id=1 【指定当前机器的服务 ID(如果是集群,不能重复)】
(2)配置完毕之后,登陆MySQL,输入如下命令:
show variables like '%log_bin%';
(3)配置目标mysql上的canal用户

mysql -u root -p

CREATE USER 'canal'@'121.5.181.139' IDENTIFIED BY 'canal@flaotw';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'canal'@'121.5.181.139';
FLUSH PRIVILEGES;

(4)重启目标mysql服务

(5)安装客户端
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum install mysql-community-client.x86_64

测试远程连接:
mysql -h 主机 -P 端口 -u canal -p

安装canal

canal的工作原理:

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

https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz

tar -zxf canal.deployer-1.1.5.tar.gz

更改配置文件

vim conf/example/instance.properties

vim conf/canal.properties

启动canal
/home/hadoop/canal/bin/startup.sh