debezium-mysql的本地使用与测试并confluent实现avro序列化
目录信息(具体包为官网下载)
zookeeper:/opt/module/apache-zookeeper-3.6.3-bin
kafka :/opt/module/kafka_2.13-2.7.2
debezium :/opt/module/debezium/connector/debezium-connector-mysql
confluent:/opt/module/confluent-5.5.0
一、安装zookeeper
-
下载安装包,解压,修改配置文件
-
找到下载的软件包,解压
cd ./apache-zookeeper-3.6.3-bin/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
----------------配置文件内容---------------------
# 修改如下内容
dataDir=/opt/module/zookeeper/zkData
dataLogDir=/opt/module/zookeeper/zkLog
- 启动 Zookeeper
cd apache-zookeeper-3.6.3-bin/bin/
# 启动zookeeper
./zkServer.sh start
# 查看进程是否启动(是否有QuorumPeerMain的进程)
jps
二、安装kafka
1.解压安装包,解压,修改配置文件
# 创建数据存放目录
mkdir -p /opt/module/kafka_2.13-2.7.2/data
vim ./kafka_2.13-2.7.2/config/server.properties,修改以下内容
#每台kafka都有唯一的brokerid
broker.id=1
#安装kafka的机器ip和提供服务的端口号
listeners=PLAINTEXT://localhost:9092
#kafka的消息存储位置
log.dirs=/opt/module/kafka_2.13-2.7.2/data
zookeeper.connect=localhost:2181
# 文件尾部添加以下内容
delete.topic.enable=true #是否直接删除topic
host.name=localhost #主机名字
2.启动kafka
cd /kafka_2.13-2.7.2
bin/kafka-server-start.sh -daemon config/server.properties
# 查看进程是否启动(是否有kafka的进程)
jps
三、配置连接器
下载完解压
tar -zxvf debezium-connector-mysql-1.7.1.Final-plugin.tar.gz -C
/opt/module/debezium/connector
四、schema registry(confluent)实现 avro 序列化
1.下载confluent community 5.5
并解压,修改confluent
中的两处地址
vim confluent-5.5.0/etc/schema-registry/schema-registry.properties
2.启动 schema registry
bin/schema-registry-start etc/schema-registry/schema-registry.properties
3.启动成功
#开启新的终端,查看是否有进程SchemaRegistryMain
jps
4.接着修改一下kafka-avro-standalone.properties
的配置
vim confluent-5.5.0/etc/schema-registry/connect-avro-standalone.properties
bootstrap-servers 修改为kafka的broker服务器地址加上端口号:localhost:9092
key.converter.schema.registry.url修改为schema registry服务器所在的地址:localhost:8081
value.converter.schema.registry.url修改为schema registry服务器所在的地址:localhost:8081
plugin.path参数里面的目录里面要确保debezium的mysql 插件存在
例如plugin.path的值中有一个目录叫做/opt/module/debezium/connector ,那么这个目录下面要存在解压好了的debezium-mysql-connector插件.
5.在confluent的一个目录etc/kafka/下创建一个mysql.properties文件,内容如下:
name=cdc-connector
connector.class=io.debezium.connector.mysql.MySqlConnector
database.hostname=localhost
database.port=3306
database.user=root
database.password=1234567
database.server.id=1
database.server.name=mysql_master
database.history.kafka.bootstrap.servers=localhost:9092
database.history.kafka.topic=mysql_master_history
include.schema.changes=true
tasks.max=1
#snapshot.mode=schema_only_recovery
6.接下来就是利用connect-standalone
启动kafka
的connect
插件(confluent-5.5.0目录下)
bin/connect-standalone etc/schema-registry/connect-avro-standalone.properties etc/kafka/mysql.properties
7.再开一个新的终端
#开启新的终端,查看是否有进程ConnectStandalone
jps
五、测试环节
1.在confluent-5.5.0的bin目录下执行
#查看是否有mysql_master这个topic
./kafka-topics --list --zookeeper localhost:2181
2.在mysql
数据库中创建一个数据库mytest
和一张表test
,并且在里面插入一条数据
再次查kafka
的topic
的列表:
可看到名为mysql_master.mytest.test的topic
3.消费一下topic
名称为mysql_master.mytest.test
的数据
./kafka-avro-console-consumer --bootstrap-server localhost:9092 --topic mysql_master.mytest.test --from-beginning
出现如图类似数据即成功实现了avro序列化。