canal工作原理

canal的下载路径
https://github.com/alibaba/canal/releases
配置
vim conf/canal.properties
这个文件是canal的基本通用配置,主要关心一下端口号,不改的话默认就是11111

image.png

vim conf/example/instance.properties
instance.properties是针对要追踪的mysql的实例配置
image.png

启动canal ./bin/startup.sh
image.png


image.png
image.png

binlog开启

在mysql的配置文件(Linux: /etc/my.cnf , Windows: \my.ini)下,修改配置
在[mysqld] 区块
设置/添加
log-bin=mysql-bin
这个表示binlog日志的前缀是mysql-bin ,以后生成的日志文件就是 mysql-bin.123456 的文件后面的数字按顺序生成。 每次mysql重启或者到达单个文件大小的阈值时,新生一个文件,按顺序编号。
mysql binlog的格式,那就是有三种,分别是STATEMENT,MIXED,ROW。

在配置文件中可以选择配置

binlog_format=row

区别:
statement
语句级,binlog会记录每次一执行写操作的语句。
相对row模式节省空间,但是可能产生不一致性,比如update tt set create_date=now()
如果用binlog日志进行恢复,由于执行时间不同可能产生的数据就不同。
优点: 节省空间
缺点: 有可能造成数据不一致。
row
行级, binlog会记录每次操作后每行记录的变化。
优点:保持数据的绝对一致性。因为不管sql是什么,引用了什么函数,他只记录执行后的效果。
缺点:占用较大空间。

mixed
statement的升级版,一定程度上解决了,因为一些情况而造成的statement模式不一致问题
在某些情况下譬如:
当函数中包含 UUID() 时;
包含 AUTO_INCREMENT 字段的表被更新时;
执行 INSERT DELAYED 语句时;
用 UDF 时;
会按照 ROW的方式进行处理
优点:节省空间,同时兼顾了一定的一致性。
缺点:还有些极个别情况依旧会造成不一致,另外statement和mixed对于需要对binlog的监控的情况都不方便。


mysql赋予权限:GRANT ALL PRIVILEGES ON . TO canal@'%' IDENTIFIED BY 'canal'

修改/etc/my.cnf文件
server-id= 1
log-bin=mysql-bin
binlog_format=row
binlog-do-db=gmall1018

你可能感兴趣的:(canal工作原理)