1 mysql数据库配置
1.1新建数据库
1.2 新建测试表
CREATE TABLE user_info(
`id` VARCHAR(255),
`name` VARCHAR(255),
`sex` VARCHAR(255)
);
1.3 修改配置文件开启 Binlog
vim /etc/my.cnf
server-id=4
log-bin=mysql-bin
binlog_format=row
binlog-do-db=caneltestdb
1.4 重启MySQL使配置生效
systemctl restart mysqld
到/var/lib/mysql 目录下查看初始文件大小 154
1.5 测试 Binlog 是否开启
插入数据
INSERT INTO user_info VALUES('1001','zhangsan','male');
再次到/var/lib/mysql 目录下,查看 index 文件的大小
1.6 赋权限
在 MySQL 中执行
mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;
mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;
2 canel部署与配置
2.1 下载并解压 Jar 包
https://github.com/alibaba/canal/releases
这边使用的是 canal.deployer-1.1.6.tar.gz版本
拷贝到/opt/sortware 目录下,然后解压到/opt/module/canal 包下(目录自己定)
注意:canal 解压后是分散的,我们在指定解压目录的时候需要将 canal 指定上
2.2 修改 canal.properties 的配置
vim conf/canal.properties
修改内容如下:
说明:这个文件是 canal 的基本通用配置,canal 端口号默认就是 11111,修改 canal 的输出 model,默认 tcp,改为输出到 kafka
多实例配置如果创建多个实例,通过前面 canal 架构,我们可以知道,一个 canal 服务中可以有多个 instance,conf/下的每一个 example 即是一个实例,每个实例下面都有独立的配置文件。默认只有一个实例 example,如果需要多个实例处理不同的 MySQL 数据的话,直接拷贝出多个 example,并对其重新命名,命名和配置文件中指定的名称一致,然后修改canal.properties 中的 canal.destinations=实例 1,实例 2,实例 3。
2.3 修改 instance.properties
我们这里只读取一个 MySQL 数据,所以只有一个实例,这个实例的配置文件在conf/example目录下
vim conf/example/instance.properties
(1)配置 MySQL 服务器地址
注意:
canal.instance.mysql.slaveId的值不能和mysql中配置的server-id相同。
(2)配置连接MySQL的用户名和密码,默认就是我们前面授权的canal
2.4 启动canal
sh bin/startup.sh
启动成功如下