我是靠谱客的博主 优秀自行车,最近开发中收集的这篇文章主要介绍canal安装和使用启动客户端ClientExample,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部