数据同步Debezium的应用

背景
近期公司在响应国家软件规范要求,重点项目的数据库采用开源版postgresql(下文简称pg),业务端依然使用oracle。因此为了保证pg到oracle的数据同步问题,经过调研采用Debezium开源项目,实现 pg -> kafka-> oracle 的数据实时同步。

开始介绍重点…

Debuzium简介
Debezium是Apache Kafka Connect的一组源连接器(source端),通过款实现剖析数据库中binlog日志,捕获数据,拷贝到kafka中,实现数据的实时抽取。另外可以通过confluen插件或者自建项目对kafka数据消费,通过解析数据转为为sql,最终实现数据的实时同步。我个人采用后者实现

Debezium的官网简介

https://github.com/debezium/debezium

https://debezium.io/documentation/reference/operations/monitoring.html

业务实现(主要分两大步骤)

一、source端实现方式
source端是pg -> kafka的数据传输。本人采用基于docker安装Debezium,安装步骤如下

  • 安装zk
docker run -d --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper
  • 安装kafka
docker run -d  --name kafka -p 9092:9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.60.128:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --link zookeeper:zookeeper debezium/kafka
  • 安装pg
docker run -d  --name database -p 5433:5432 -e POSTGRES_PASSWORD=debezium  -d debezium/example-postgres
  • 安装connect
docker run -d --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 zookeeper:zookeeper --link kafka:kafka --link database:database debezium/connect
  • 使用postman执行API
注册连接器,使用post添加,get查看

POST: http://192.168.60.128:8083/connectors/
{
    "name": "paas-connector",
    "config": {
        "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
        "database.dbname": "postgres",
        "database.user": "postgres",
        "slot.name": "debezium_slot",
        "tasks.max": "1",
        "database.server.name": "postgres",
        "database.port": "1921",
        "include.schema.changes": "true",
        "plugin.name": "pgoutput",
        "database.serverTimezone": "Asia/Shanghai",
        "database.hostname": "10.1.8.28",
        "database.password": "vK$LOi$F",
        "name": "paas-connector",
        "database.history.store.only.monitored.tables.ddl": "true",
        "table.include.list": "paas.*"
    }
}
  • 查询连接器
查看当前inventory-connector连接器信息
192.168.60.128:8083/connectors/inventory-connector
  • 查看所有连接器
192.168.60.128:8083/connectors
  • 监听kafka的变化,可以查看源端数据的实时动态日志
docker run -it --rm --name watcher --link zookeeper:zookeeper --link kafka:kafka debezium/kafka watch-topic -a -k postgres.inventory.test2

其中postgres.inventory.test2是kafka的topic
postgres是数据库名称,inventory是schema,test2是数据表名称

二、sink端实现方式
实现简要描述:通过本地搭建springboot项目,配置kafka服务,对kafka topic的数据监听,实现数据的实时消费(采用批量消费,解析数据,并采用多线程池方式将数据同步到oracle中),具体代码请参考:

https://github.com/alan-cxh/kafkaDB2oracle

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值