Canal+MySQL+Kafka+Zookeeper

目录

一、Canal

Ⅰ、下载安装

Ⅱ、配置主要配置文件

(1)conf/canal.properties

(2)conf/example/instance.properties

 Ⅲ、开启canal

二、MySQL

Ⅰ、 搭建与基础使用

Ⅱ、开启二进制日志

三、Kafka+Zookeeper集群

Ⅰ、搭建与基础使用

Ⅱ、创建topic

 四、测试

Ⅰ、数据库操作

Ⅱ、kafka消费


一、Canal

阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。

canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)

mysql的主从复制主要靠二进制文件实现,而canal把自己伪装成slave,假装从master复制数据

在本架构中,canal通过binlog同步拿到变更数据,再发送到Kafka

Ⅰ、下载安装

下载:Releases · alibaba/canal (github.com)

 进行解压、安装

mkdir -p /opt/canal

tar zxvf canal.deployer-1.1.2.tar.gz -C /opt/canal/

Ⅱ、配置主要配置文件

(1)conf/canal.properties

cd /opt/canal/conf/

vim canal.properties
#################################################
#########               common argument         #############
#################################################
#----------------------------

# tcp, kafka, RocketMQ
canal.serverMode = kafka
#修改为kafka,默认为tcp

#----------------------------

##################################################
#########                    MQ                      #############
##################################################
#----------------------------

canal.mq.servers = ljp26:9092,ljp111:9092,ljp120:9092
#定义MQservers

#----------------------------

(2)conf/example/instance.properties

vim /opt/canal/conf/example/instance.properties

#################################################
## mysql serverId , v1.0.26+ will autoGen
 canal.instance.mysql.slaveId=10
#解注释,修改id

#=========================================================

# username/password
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
#定义数据库登录的用户与密码
canal.instance.connectionCharset = UTF-8
canal.instance.defaultDatabaseName =test
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

#=========================================================

# mq config
canal.mq.topic=canal
canal.mq.partition=0
#定义消息队列的topic

 Ⅲ、开启canal

/opt/canal/bin/startup.sh

二、MySQL

Ⅰ、 搭建与基础使用

MySQL数据库基础理论、部署与使用

Ⅱ、开启二进制日志

mysql在这里的主要设置:

vim /etc/my.cnf

[mysqld]
#=======================================
log-bin=mysql-bin
#开启二进制日志
binlog_format=row
#二进制日志记录格式
bin-log-db=example
#定义开启二进制日志的库
#=======================================

---wq

systemctl restart mysqld

三、Kafka+Zookeeper集群

Ⅰ、搭建与基础使用

kafka+zookeeper群集

Ⅱ、创建topic

群集开启(Kafka+Zookeeper)

kafka-topic.sh --create --bootstrap-server ljp26:9092,ljp111:9092,ljp120:9092
--partitions 3 --replication-factor 2 --topic canal
kafka-topic.sh --describe --bootstrap-server ljp26:9092,ljp111:9092,ljp120:9092
--topic canal

 四、测试

Ⅰ、数据库操作

做完以上的操作后,确保canal开启、mysql开启、kafka群集开启

我们进入mysql数据库,做一些增删改操作

例:

mysql>GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'
@'%' IDENTIFIED BY 'canal' ;
mysql> create table test1.test (id int(5),user_name char(8),primary_key(id));

Ⅱ、kafka消费

kafka-console-consumer.sh --bootstrap-server ljp26:9092,ljp111:9092,ljp120:9092 
--topic canal

得到二进制日志数据,成功

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值