概述
canal安装和使用
Canal介绍
名称:canal
译意: 水道/管道/沟渠
语言: 纯java开发
定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql
关键词: mysql binlog parser / real-time / queue&topic
工作原理:
原理相对比较简单:
1.canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
2.mysql master收到dump请求,开始推送binary log给slave(也就是canal)
3.canal解析binary log对象(原始为byte流)
安装canal
mysql初始化
a. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,建议配置binlog模式为row.
找到my.cnf文件
Vi my.cnf 打开文件并编辑
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
b. canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限.
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
启动步骤
1. 下载canal
直接下载网址如下:直接下载自己所需的版本
https://github.com/alibaba/canal/releases
2. 解压包
tar zxvf canal.deployer-1.0.26-SNAPSHOT.tar.gz -C /canal/deployer
解压完成后进入 /canal/deployer 下 如下:
3.修改配置文件
进入 conf/example/下 修改instance.properties 配置文件
## mysql serverId
canal.instance.mysql.slaveId=0 //不可以和my.cnf 文件serverId 相同
# position info
canal.instance.master.address=134.96.33.134:10001 //修改成自己的数据库信息
# enable gtid use true/false
canal.instance.gtidon=false
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=
# table meta tsdb info
canal.instance.tsdb.enable=true
canal.instance.tsdb.dir=${canal.file.data.dir:../conf}/${canal.instance.destination:}
canal.instance.tsdb.url=jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
canal.instance.tsdb.dbUsername=canal
canal.instance.tsdb.dbPassword=canal
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=
# username/password //修改成自己的数据库信息
canal.instance.dbUsername=root
canal.instance.dbPassword=root
canal.instance.defaultDatabaseName=company
canal.instance.connectionCharset=UTF-8
# table regex
//过滤表
canal.instance.filter.regex=.*\..*
# table black regex
canal.instance.filter.black.regex=
4.准备启动
cd bin/
sh startup.sh
cd /canal/logs/canal/
more canal.,log
5.具体日志
cd cd /canal/logs/example/
more example.log
6.关闭
sh stop.sh kill -9 xxx 杀掉进程
截至目前canal 服务端已经启动成功
启动客户端ClientExample
启动步骤如同服务端一样
目录结构如下:
链接mysql 客户端
beeline:mysql -uroot -p --socket=/tmp/mysql.sock --port=10001
create database company;
use company;
drop table test;
create table test (
uid int (4) primary key not null auto_increment,
name varchar(10) not null);
insert into test (name) values('10');
delete from test where uid='1';
启动成功后触发数据变更 logs 日志中可以看到:
截至目前binlog日志已经打印成功 后续同步hdsf 或hive 需要自行编写客户端程序
Hive 表保存在 HDFS 上,该文件系统不支持修改,因此我们需要一些额外工作来写入数据变更。常用的方式包括:JOIN、Hive 事务、或改用 HBase。
最后
以上就是优秀自行车为你收集整理的canal安装和使用启动客户端ClientExample的全部内容,希望文章能够帮你解决canal安装和使用启动客户端ClientExample所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复