CentOS7安装Canal

第一章 绪论

 1.1 引言

 

第二章 操作详解

2.1 下载Canal

下载地址:https://github.com/alibaba/canal/releases 

CentOS7安装Canal 

下载的文件名是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_%';
结果显示如下:

CentOS7安装Canal 

CentOS7安装Canal

 

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中的数据时会报错:

CentOS7安装Canal

    执行命令: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
配置好的文件内容如下:

CentOS7安装Canal

rds_instance.properties中的内容也要修改一下,把其中的127.0.01改成192.168.1.20,这是mysql所在的服务器ip地址。最后内容如下:

CentOS7安装Canal

 

2.4 启动Canal Server

首先保证192.168.1.20上的mysql服务起着,然后执行一下命令启动canal
/usr/local/canal-1.0.26/bin/startup.sh

CentOS7安装Canal

 
关闭服务执行/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日志文件