Debezium 可以监控以下数据的增量变化:
MongoDB
MySQL
PostgreSQL
SQL Server
Oracle
Db2
Cassandra
然后将增量数据同步到 Kafka。
当数据同步到 Kafka 时,我们可以选择自己研发工具读取 Kafka 的数据,然后从 Kafka 中进行数据清洗。
或者使用官方的 Kafka Connect 工具,它支持同步到 ElasticSearch 等地方。
下面来演示如何部署 Debezium。
部署 Kafka
因为 Debezium 需要将增量数据同步到 Kafka 中存储,所以首先要创建 Kafka 实例。
你可以使用 docker-compose 快速部署,参考 https://kafka.whuanle.cn
或者通过 Docker 快速部署一个练习使用。
docker run -itd --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 quay.io/debezium/zookeeper
docker run -itd --name kafka -p 9092:9092 --link zookeeper:zookeeper quay.io/debezium/kafka
然后可以部署一个 kafdrop 面板查看 kafka。
docker run -dit -p 9000:9000 \
-e JVM_OPTS="-Xms32M -Xmx64M" \
-e KAFKA_BROKERCONNECT=192.168.0.0:9092 \
-e SERVER_SERVLET_CONTEXTPATH="/" \
obsidiandynamics/kafdrop
替换 192.168.0.0:9092 为具体的 IP。
部署 Mysql
如果你已经有 Mysql 数据库,这里可以跳过。
docker run -d -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql
部署 debezium
docker run -itd --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link kafka:kafka quay.io/debezium/connect:2.3
由于 Docker hub 的源比较旧,笔者建议使用
quay.io/debezium/connect:{version}}
。
仓库地址 https://quay.io/repository/debezium/connect?tab=tags
然后部署一个管理面板。
docker run -itd --name debezium-ui -p 8080:8080 -e KAFKA_CONNECT_URIS=http://192.168.0.0:8083 debezium/debezium-ui
配置同步
打开 8080 端口。
然后点击 Validate 。如果验证通过,则点击 next 进行下一步。
需要填写监控的数据库。
另外要开启 Kafka 自动创建主题的配置。
文章评论
Debezium connect,如果需要持久化,可以使用
-v /data/debeziumdata:/kafka/config