资料
# 官方
https://github.com/alibaba/canal
# 文档首页
https://github.com/alibaba/canal/wiki
# 服务端搭建文档
https://github.com/alibaba/canal/wiki/QuickStart
1. mysql开启binlog
mysql的my.cnf配置增加如下配置,开启binlog
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
新增用户,用于canal服务端伪装成mysql的slave
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
这里创建用户后,在后面配置好example的instance后,发现日志有两个报错,第一个是 too manny connections 连接过多,导致连接池溢出;二是 caching_sha2_password Auth failed
- 连接数过多,导致连接溢出解决方案:
更改mysql的默认最大连接数
https://mp.weixin.qq.com/s?__biz=MzA4NzQ0Njc4Ng==&mid=2247499002&idx=2&sn=54d964eb3c85bc49d3e4eaaf0045ba34&chksm=903bf897a74c71811c2cf5777fef1fd84c5a80887995025a41ba08d36336916fd7dd11c85801&scene=132#wechat_redirect
- caching_sha2_password Auth failed解决方案
https://www.jianshu.com/p/efa68e05d2ed
密码加密方式为caching_sha2_password,所以修改为mysql_native_password 就行并重新更新密码
ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal..'; #更新一下用户密码
FLUSH PRIVILEGES; #刷新权限
2. 下载canal1.1.4
下载 canal.deployer-1.1.4.tar.gz文件
https://github.com/alibaba/canal/releases/tag/canal-1.1.4
将下载下来的 canal.deployer-1.1.4.tar.gz文件上传到服务器,解压
mkdir /data/canal/canal
tar zxvf canal.deployer-$version.tar.gz -C /data/canal/canal
3. 修改配置文件
cd /data/canal/canal/
vi conf/example/instance.properties
需要修改的部分,在下面注释有列出来
## mysql serverId
# 需要修改,保证唯一性
canal.instance.mysql.slaveId = 1234
#position info,需要改成自己的数据库信息
canal.instance.master.address = 192.168.56.102:13306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#username/password,需要改成自己的数据库信息
canal.instance.dbUsername = canal
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =
canal.instance.connectionCharset = UTF-8
#table regex
canal.instance.filter.regex = .\*\\\\..\*
4. 启动服务端
启动:
sh bin/startup.sh
查看server的日志:
tail -50f logs/canal/canal.log
查看instance的日志:
tail -50f logs/example/example.log
如需关闭:
sh bin/stop.sh
5. springboot2.1.7集成canal
参考官网,根据自己公司的情况封装一下即可
https://github.com/alibaba/canal/wiki/ClientExample