canal + kafka 环境搭建

一、kafka搭建

1、安装kafka

1)下载并上传服务器:

https://kafka.apache.org/downloads

2)解压:

tar -zxf kafka_2.13-2.7.0.tgz

cd /zwtx/kafka_2.13-2.7.0

3)修改配置文件

vim config/server.properties

修改其中的:

broker.id=1
# 先创建好log文件目录
log.dirs=/data/kafka/kafka-logs

2、启动

1)启动 zk

使用安装包中的脚本启动单节点 Zookeeper 实例:

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

2)启动Kafka 服务

使用 kafka-server-start.sh 启动 kafka 服务:

bin/kafka-server-start.sh -daemon config/server.properties

二、canal搭建

1、简介

canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

以简单地把canal理解为一个用来同步增量数据的一个工具

canal的数据同步不是全量的,而是增量。基于binary log增量订阅和消费,canal可以做:

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护
  • 业务cache(缓存)刷新
  • 带业务逻辑的增量数据处理

2、配置Mysql开启binlog

1、创建canal用户

-- 使用命令登录:mysql -u root -p
-- 创建用户 用户名:canal 密码:canal
create user 'canal'@'%' identified by 'canal';

-- 授权 *.*表示所有库 用户名 密码
grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by 'canal';

-- 刷新权限
FLUSH PRIVILEGES;

2、配置my.cnf

[mysqld]
# 打开binlog
log-bin=mysql-bin
# 选择ROW(行)模式
binlog-format=ROW
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1

改完配置文件后,重启mysql

3、验证

-- 查看是否打开binlog模式
show variables like 'log_bin';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

-- 查看binlog日志文件列表
show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       154 |
+------------------+-----------+

-- 查看当前正在写入的binlog文件
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

MySQL服务器这边就搞定了

3、安装canal

1)下载并上传服务器

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

2)解压

3)修改配置文件

vim conf/example/instance.properties
## mysql serverId , v1.0.26+ will autoGen
## v1.0.26版本后会自动生成slaveId,所以可以不用配置
# canal.instance.mysql.slaveId=0

# 数据库地址
canal.instance.master.address=127.0.0.1:3306
# binlog日志名称
canal.instance.master.journal.name=
# mysql主库链接时起始的binlog偏移量
canal.instance.master.position=
# mysql主库链接时起始的binlog的时间戳
canal.instance.master.timestamp=
canal.instance.master.gtid=

# username/password
# 在MySQL服务器授权的账号密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
# 字符集
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false

# table regex .*\\..*表示监听所有表 也可以写具体的表名,用,隔开
canal.instance.filter.regex=.*\\..*
# mysql 数据解析表的黑名单,多个表用,隔开
canal.instance.filter.black.regex=

4、启动

sh bin/start.sh

# 查看日志看是否启动成功
tail -f logs/example/example.log

三、canal + kafka

1、修改canal配置

1、修改canal.properties

vim conf/canal.properties
# tcp, kafka, RocketMQ 这里选择kafka模式
canal.serverMode = kafka
# 配置MQ的服务地址,这里配置的是kafka对应的地址和端口
canal.mq.servers = 127.0.0.1:9092

2、修改instance.properties

vim conf/example/instance.properties
# 定义主题名
canal.mq.topic=canaltopic

2、启动测试

1、启动canal

2、使用命令进行监听消费:

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic canaltopic

3、mysql CRUD看数据是否能消费到

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值