本文目标
在已知kafka connect和debezium作用,会使用kafka的基础上,学会使用debezium来读取binlog,并通过kafka connect将读取的内容放入kafka topic中。
基于卡夫卡0.10.0和Debezium0.6,mysql5.6
kafka connect
- Kafka Connect是一种用于Kafka和其他数据系统之间进行数据传输的工具。
- 仅关注数据的复制,并且不处理其他任务
- Kafka connect有两个概念,一个source,另一个是sink。source是把数据从一个系统拷贝到kafka里,sink是从kafka拷贝到另一个系统里。
- 可使用插件,获取不同系统的数据。例如通过Debezium插件解析mysql的日志,获取数据。
- 支持集群,可以通过REST API管理Kafka Connect。
- 对数据的传输进行管理和监控。
Debezium
- Debezium是一个分布式平台,可将现有数据库转换为事件流,因此应用程序可以立即查看并立即响应数据库中每一行的更改。
- Debezium建立在Apache Kafka之上,并提供用于监视特定数据库管理系统的Kafka Connect兼容连接器。
- 本教程使用Debezium监控binlog。
准备操作
- mysql需开启binlog
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
- 1
- 2
- 3
- 4
- mysql需创建一个有mysql slave相关权限的账号,若mysql不在本机,则需要远程权限,防火墙放行。
//mysql slave相关权限
CREATE USER canal IDENTIFIED BY 'debezium';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debezium'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'debezium'@'%' ;
FLUSH PRIVILEGES;
- 1
- 2
- 3
- 4
- 5
操作概述
- 安装并启动kafka
- 安装并启动mysql
- 下载Debezium的mysql连接器http://debezium.io/docs/install/并解压
- 安装debezium,即将解压目录写入classpath变量,例如:export classpath=/root/debezium-connector-mysql/*
只在当前shell有效 - 参考http://debezium.io/docs/connectors/mysql/的配置文件示例,写好配置文件。
- 以独立模式启动kafka connect,此时debezium会对数据库中的每一个表创建一个topic,消费相应的topic,即可获取binlog解析信息。
//启动kafka connect
bin/connect-standalone.sh config/connect-standalone.properties mysql.properties
//查看topic列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
//消费该主题
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
- 1
- 2
- 3
- 4
- 5
- 6
配置文件
//mysql.properties
name=inventory-connector
connector.class=io.debezium.connector.mysql.MySqlConnector
database.hostname=192.168.99.100
database.port=3306
database.user=debezium
database.password=dbz
database.server.id=184054
database.server.name=fullfillment
database.whitelist=inventory
database.history.kafka.bootstrap.servers=192.168.30.30:9092
database.history.kafka.topic=dbhistory.fullfillment
include.schema.changes=true
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
索引
debezium官网 http://debezium.io/
kafka文档 http://kafka.apache.org/0100/documentation.html
http://blog.csdn.net/nilin99/article/details/78224785?locationNum=5&fps=1