Kafka集成Debezium监听postgresql变更

下载postgres的插件:https://debezium.io/documentation/reference/2.7/install.html

2.7版本支持postgresql12数据库。

debezium-connector-postgres-2.7.4.Final-plugin.tar.gz

上传插件并解压

cmd 复制代码
mkdir /usr/local/kafka/kafka_2.12-2.2.1/connector
cd /usr/local/kafka/kafka_2.12-2.2.1/connector
tar -zxvf debezium-connector-postgres-2.7.4.Final-plugin.tar.gz

进入kafka配置目录配置连接器(单机kafka)

cmd 复制代码
cd /usr/local/kafka/kafka_2.12-2.2.1/config
#修改配置
vi connect-standalone.properties
cmd 复制代码
#配置kafka地址
bootstrap.servers=192.168.159.100:9092

#采集的数据存储到kafka的数据格式
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter

#是否存储schemas,存储则格式会复杂些
key.converter.schemas.enable=false
value.converter.schemas.enable=false

#插件的路径
plugin.path=/usr/local/kafka/kafka_2.12-2.2.1/connector

使用命令启动 Kafka Connect 服务(单机kafka)

cmd 复制代码
/usr/local/kafka/kafka_2.12-2.2.1/bin/connect-standalone.sh -daemon /usr/local/kafka/kafka_2.12-2.2.1/config/connect-standalone.properties /usr/local/kafka/kafka_2.12-2.2.1/config/connect-file-source.properties /usr/local/kafka/kafka_2.12-2.2.1/config/connect-file-sink.properties

配置Debezium Connector:

pgsql修改配置文件:postgresql.conf

cmd 复制代码
listen_addresses = '*'
#开启逻辑复制
wal_level = logical
# 允许多少个流复制协议连接过来,一个流复制协议会产生一个walsender进程,该数不能低于master的配置数量
max_wal_senders = 2	
max_replication_slots = 1

修改pg_hba.conf:

cmd 复制代码
#添加
host    all             all             0.0.0.0/0                 trust
host    replication     all             0.0.0.0.0                 trust

注册连接器:

json 复制代码
{
    "name": "my-postgresql-connector",
    "config": {
        "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
        "database.hostname": "192.168.159.103",
        "database.port": "15432",
        "database.dbname": "db_test",
        "database.user": "postgres",
        "database.password": "123456",
        "plugin.name": "pgoutput",
        "database.server.name": "server5",
        "topic.prefix": "linging"
    }
}

执行:

cmd 复制代码
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" 192.168.159.100:8083/connectors/ -d '{"name":"my-postgresql-connector","config":{"connector.class":"io.debezium.connector.postgresql.PostgresConnector","database.hostname":"192.168.159.103","database.port":"15432","database.dbname":"db_test","database.user":"postgres","database.password":"123456","plugin.name":"pgoutput","database.server.name":"server5","topic.prefix":"linging"}}'

修改数据库表,查看kafka消息:

相关推荐
oMcLin3 小时前
如何在Debian 11上通过配置MySQL 8.0的分布式架构,提升跨区域数据同步的效率与延迟?
分布式·mysql·debian
一条咸鱼_SaltyFish4 小时前
[Day15] 若依框架二次开发改造记录:定制化之旅 contract-security-ruoyi
java·大数据·经验分享·分布式·微服务·架构·ai编程
IT 行者5 小时前
Spring Security 7 OAuth2 授权码分布式存储之Redis存储方案
redis·分布式·spring
潇凝子潇6 小时前
kafka之监控告警
分布式·kafka
Light607 小时前
从“报告”到“能力”——构建智能化、可审计的数据治理闭环——领码 SPARK 数据质量平台白皮书
大数据·分布式·spark
maozexijr7 小时前
RabbitMQ Exchange Headers类型存在的意义?
分布式·rabbitmq
还在忙碌的吴小二7 小时前
XXL-SSO 分布式单点登录框架
分布式
独自破碎E7 小时前
RabbitMQ的消息确认机制是怎么工作的?
分布式·rabbitmq
潇凝子潇8 小时前
Kafka 实现集群安全认证与加密机制
分布式·安全·kafka
indexsunny8 小时前
互联网大厂Java求职面试实战:微服务与Spring Boot在电商场景中的应用
java·数据库·spring boot·微服务·kafka·hibernate·电商