阿里开源数据同步组件Canal

一.简介
canal是阿里开源的数据同步组件
这个是是git地址
二.使用步骤 1.安装配置mysql 安装一个数据库(这个数据库是被监听的对象,我这里用的是.7)创建一个用户专门用于数据同步(这里也可以直接用root用户)
①创建用户 用户名:canal 密码:canal
create user 'canal'@'%' identified by 'canal';
②授予外部访问权限
grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by 'canal';
修改mysql配置文件
# 打开binloglog-bin=mysql-bin# 选择ROW(行)模式binlog-format=ROW# 配置MySQL replaction需要定义,不要和canal的slaveId重复(canal1.1.4自动生成slaveId)server_id=1
修改完配置文件之后,重启mysql,再查看是否修改成功
show VARIABLES like 'log_bin';
创建数据库
create database user character set utf8;
【阿里开源数据同步组件Canal】创建表
CREATE TABLE `user`.`tb_user`(`id` int(32) NOT NULL,`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`age` int(32) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2.安装配置canal
下载canal,我这里用的是1.1.4,下载可能非常慢,这里再贴上我的百度云,提取码:ewji
将canal放到/usr/local/canal目录下,解压
tar -zxvf canal.deployer-1.1.4.tar.gz
打开配置文件
vi conf/example/instance.properties
只需要修改这行代码配置文件就可以了,如果用户不是canal,还需要修改下和,
canal...regex不用修改,默认监听整个数据库,也可以写具体的表名,用逗号隔开
注意:如果这里使用的是安装的mysql,有可能没有vi命令,需要手动安装
apt-get update
apt-get install vim
如果上面的命令执行失败,我之前用 8的时候报错了,最后没有解决,更换成 7就可以了
3.启动canal 启动canal
查看日志文件,查看canal是否启动成功
启动成功
注意,这里启动的时候有可能会有很多问题出现
比如:数据库编码问题
如果是用创建的数据库,这样看上去用的好像是utf8,但是在canal这里不行
我们可以看一下该数据库的编码格式,如果是这样的就会有问题
show variables like "%character%";
修改一下数据的编码格式

阿里开源数据同步组件Canal

文章插图
set character_set_client = utf8;set character_set_server = utf8;set character_set_connection = utf8;set character_set_database = utf8;set character_set_results = utf8;set collation_connection = utf8_general_ci;set collation_database = utf8_general_ci;set collation_server = utf8_general_ci;
这样再重启就不会有编码问题了
三.Java canal客户端 引入maven依赖
com.alibaba.otter