Canal的原理及其使用

1.Cannal的工作原理
①cannal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议
②MySQL mater收到dump请求,开始推送binary log给slave(即canal)
③canal解析binary log对象
2、Canal搭建环境
1、准备好MySQL运行环境;
2、开启 MySQL的binlog写入功能,配置 binlog-format 为 ROW 模式,my.cnf中配置如下:
[mysqld]
log-bin=mysql-bin #开启 binlog
binlog-format=ROW #选择 ROW 模式
server_id=1 #配置MySQL replaction需要定义,不要和canal的 slaveId重复

3、授权canal连接MySQL账号具有作为MySQL slave的权限, 如果已有账户可直接 grant授权:

启动MySQL服务器;
登录mysql:./mysql -uroot -p -h127.0.0.1 -P3306

CREATE USER canal IDENTIFIED BY ‘canal’;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘canal’@’%’;
FLUSH PRIVILEGES;

4、下载 canal部署程序
Wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz

tar -zxvf canal.deployer-1.1.4.tar.gz -C /usr/local/canal.deployer-1.1.4

5、配置修改

vim conf/example/instance.properties

主要是修改配置文件中与自己的数据库配置相关的信息;

6、启动Canal

./startup.sh

7、查看进程:
ps -ef | grep canal

8、查看 server 日志
cat logs/canal/canal.log

9、查看 instance 的日志
vi logs/example/example.log

10、关闭Canal
./stop.sh

canal server的默认端口号为:11111,如果需要调整的话,可以去到\conf目录底下的canal.properties文件中进行修改;
相关命令:
#是否启用了日志
show variables like ‘log_bin’;
#怎样知道当前的日志
show master status;
#查看mysql binlog模式
show variables like ‘binlog_format’;
#获取binlog文件列表
show binary logs;
#查看当前正在写入的binlog文件
show master status\G
#查看指定binlog文件的内容
show binlog events in ‘mysql-bin.000002’;
注意binlog日志格式要求为row格式;
Binlog的三种基本类型分别为:
ROW模式 除了记录sql语句之外,还会记录每个字段的变化情况,能够清楚的记录每行数据的变化历史,但是会占用较多的空间,需要使用mysqlbinlog工具进行查看;
STATEMENT模式只记录了sql语句,但是没有记录上下文信息,在进行数据恢复的时候可能会导致数据的丢失情况;

MIX模式比较灵活的记录,例如说当遇到了表结构变更的时候,就会记录为statement模式。当遇到了数据更新或者删除情况下就会变为row模式;

启动了canal的server之后,便是基于java的客户端搭建了;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值