原理
通过监听主数据库(目前只能监听Mysql)的DML操作log日志,以写入缓存数据库(Redis),相对应主数据库需要开启日志
应用场景
用于同步Mysql数据库信息
实例
- 首先需要开启Mysql的日志功能
进入mysql文件夹下/etc/mysql/mysql.conf.d/mysqld.cnf,编辑添加
log-bin=/var/lib/mysql/mysql-bin//日志保存路径
server-id=12345//唯一标识
保存后,即可开启Mysql日志功能
- 创建账号,用于canal访问
create user canal@’%’ IDENTIFIED by ‘canal’;//创建canal账号访问 Grant
select,replication slave,replication client,super . to ‘canal’@’%’;
Flush privileges;
- 重启Mysql服务
- 进入canal-server/conf,配置canal.properties是Canal自身的配置
canal.properties中的canal.id不能和mysql的server-id重复
- canal-server/conf/example/instance.properties是同步的配置,在这里指定要同步的数据库
canal.instance.master.address=192.168.211.132:33306//表示主数据库节点的IP,用于连接数据库
canal.instance.dbUsername=canal//数据库账号名称
canal.instance.dbPassword=canal//数据库账号密码
canal.instance.filter.regex=.\…
//表的正则匹配,.*表示的匹配所有数据库,\…*表示匹配所有的表,也就是表示所有数据库中所有表都进行监听操作
#canal.instance.filter.regex=changgou_content.tb_content //这里表示只监听changgou_content数据库中的content表
-
外部监听需要指定example名字
canal.mq.topic=example//表示监听外部自己定义的微服务 -
配置canal完成后,开始配置开发环境,需要手动导入canal包
官网下载,然后mvn install下载到本地仓库 -
编写application.yml,重点是canal的配置
-
编写canal的监听器