CentOS7安装Canal
CentOS7安装Canal
第一章 绪论
1.1 引言
第二章 操作详解
2.1 下载Canal
下载地址:https://github.com/alibaba/canal/releases
下载的文件名是canal.deployer-1.0.26-SNAPSHOT.tar.gz(原先是canal.adapter-1.1.3-SNAPSHOT.tar.gz,但后来发现不会配置,没什么资料可以参考,于是就换个低版本的来操作),然后通过SecureCRT把这个文件放到192.168.1.20上的/opt/tools目录下。
2.2 安装Canal
进入/opt/tools目录,执行命令:tar -zxvf canal.adapter-1.1.3-SNAPSHOT.tar.gz,这会在当前目录下出现bin、conf、lib、logs、plugin目录。
执行mkdir /usr/local/canal-1.0.26,即在usr/local目录下创建canal-1.0.26目录,然后把bin、conf、lib、logs、plugin目录移动到/usr/local/canal-1.0.26目录下。执行以下命令即可:
mv bin /usr/local/canal-1.0.26
mv conf /usr/local/canal-1.0.26
mv lib /usr/local/ canal-1.0.26
mv logs /usr/local/ canal-1.0.26
mv plugin /usr/local/ canal-1.0.26
2.3 配置Canal
2.3.1开启binlog
vi /etc/my.cnf,在[mysqld]中添加如下语句:
log-bin=mysql-bin
binlog-format=ROW
server_id=1
保存退出后重启mysql,执行systemctl restart mysql
重启后再执行mysql -uroot -p123456
执行show variables like 'log_%';
结果显示如下:
2.3.2创建具有slave权限的账号
通过以下语句创建用户canal:
create user [email protected]'%' identified by 'canal';
通过以下语句给用户授权:
grant select, replication slave, replication client on *.* to [email protected]'%';
2.3.3修改Canal Server配置
首先要保证虚拟机的cpu的数量大于1,否则在修改mysql中的数据时会报错:
执行命令:vi /usr/local/canal-1.0.26/conf/example/instance.properties,添加如下语句:canal.instance.mysql.slaveId=1234
这个slaveId自己定义,千万不要跟其他的mysql slaveid重合了。Canal其实也是自己模拟mysql slave,所以也要有个slaveid。
同时其中的127.0.0.1改成192.168.1.20。
配置好的文件内容如下:
rds_instance.properties中的内容也要修改一下,把其中的127.0.01改成192.168.1.20,这是mysql所在的服务器ip地址。最后内容如下:
2.4 启动Canal Server
首先保证192.168.1.20上的mysql服务起着,然后执行一下命令启动canal:
/usr/local/canal-1.0.26/bin/startup.sh
关闭服务执行/usr/local/canal-1.0.26/bin/stop.sh
2.4 其他操作
-----------------------------------------------------------
# 查看binlog
-----------------------------------------------------------
查看binlog文件的格式:show variables like 'binlog_format';
binlog文件列表:show binary logs; / show master logs;
当前binlog文件:show master status;
查看binlog文件内容(概要):show binlog events in 'mysql-bin.000001';
show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
选项解析:
IN 'log_name' 指定要查询的binlog文件名(不指定就是第一个binlog文件)
FROM pos 指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
LIMIT [offset,] 偏移量(不指定就是0)
row_count 查询总条数(不指定就是所有行)
查询结果:
Log_name: mysql-bin.000021 ----------------------------------------------> 查询的binlog日志文件名
Pos: 11197 ----------------------------------------------------------> pos起始点:
Event_type: Query ----------------------------------------------------------> 事件类型:Query
Server_id: 1 --------------------------------------------------------------> 标识是由哪台服务器执行的
End_log_pos: 11308 ----------------------------------------------------------> pos结束点:11308(即:下行的pos起始点)
Info: use `zyyshop`; INSERT INTO `team2` VALUES (0,345,'asdf8er5') ---> 执行的sql语句
查看binlog文件内容(详细): mysqlbinlog --base64-output=decode-rows -v /var/lib/mysql/mysql-bin.000001
-----------------------------------------------------------
# binlog文件管理
-----------------------------------------------------------
flush logs; //生成新的binlog文件
reset master; //删除master的binlog
reset slave; //删除slave的中继日志
purge master logs before '2012-03-30 17:20:00'; //删除指定日期以前的日志索引中binlog日志文件
purge master logs to 'mysql-bin.000002'; //删除指定日志文件的日志索引中binlog日志文件
CentOS7安装Canal相关教程