PostgreSQL【拓展篇】05:PostgreSQL数据同步到kafka【kafkacat+wal2json】

一、环境准备

1、环境信息

192.168.184.192 

在这里插入图片描述

2、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

在这里插入图片描述

二、基础环境安装

1、安装postgresql数据库

我这里安装的是postgresql14,其他版本也可以,安装可参考:
CentOS7.5【脚本编译】安装PostgreSQL14.8
在这里插入图片描述

(1)修改配置文件

postgresql.conf调整wal_level属性为logical,该属性需要重启才能生效

cd /data/pg14/db
vim postgresql.conf

修改为如下内容

wal_level = logical
shared_preload_libraries = 'wal2json.so'

在这里插入图片描述
在这里插入图片描述

(2)重启数据库

这里要等wal2json安装好再进行重启,不然会报错

su - mydba
pg_ctl restart
pg_ctl status

在这里插入图片描述
在这里插入图片描述

(3)查看参数

psql -d postgres
show wal_level;

在这里插入图片描述

2、安装jdk

可参考:CentOS7.5安装jdk1.8

3、安装zookeeper

可参考:Zookeeper安装部署【单机】

4、安装kafka

可参考:Kafka安装部署:单机安装部署、集群安装部署

(1)修改配置文件

cd /data/soft/kafka_2.12-2.4.1/config/
vi server.properties

修改如下内容:

listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://192.168.184.192:9092

在这里插入图片描述

(2)重启kafka

jps -m 
kill -9 进程id

在这里插入图片描述

cd /data/soft/kafka_2.12-2.4.1/
bin/kafka-server-start.sh -daemon config/server.properties 

在这里插入图片描述

(3)测试kafka

cd /data/soft/kafka_2.12-2.4.1/
新增topic
bin/kafka-topics.sh --create --zookeeper 192.168.184.192:2181  --partitions 1 --replication-factor 1 --topic hello
查询topic
bin/kafka-topics.sh --list --zookeeper 192.168.184.192:2181
删除topic
bin/kafka-topics.sh --delete --zookeeper 192.168.184.192:2181 --topic hello

在这里插入图片描述

三、安装kafkacat

1、安装依赖

yum install -y librdkafka-devel

在这里插入图片描述

2、下载kafkacat

(1)git下载

cd /root/
yum -y install git
git clone https://github.com/edenhill/kafkacat

在这里插入图片描述

(2)官网下载

https://github.com/edenhill/kcat

在这里插入图片描述

3、编译安装

cd /root/kafkacat
./configure
make -j 24
make install -j 24

在这里插入图片描述
在这里插入图片描述

kcat --help

在这里插入图片描述

四、安装wal2json插件

1、下载地址

(1)官网地址

https://github.com/eulerto/wal2json/releases/tag/wal2json_2_3

在这里插入图片描述

(2)网盘地址

链接: https://pan.baidu.com/s/1hApchE38ZmYpYJAGohl1Jw?pwd=da4b
提取码: da4b 

2、上传安装包

cd /root/
ll
tar -xf wal2json-wal2json_2_3.tar.gz

在这里插入图片描述

3、编译安装

cd /root/wal2json-wal2json_2_3
make -j 24
make install -j 24

在这里插入图片描述

4、重启postgresql数据库

之前重启会失败的,现在重启

su - mydba
pg_ctl restart
pg_ctl status

在这里插入图片描述

五、进行测试

1、创建复制槽

(1)创建复制槽

su - mydba
pg_recvlogical -d postgres --slot slot1 --create-slot -P wal2json

在这里插入图片描述

(2)查看复制槽

su - mydba
psql -d postgres -c "select * from pg_replication_slots;"

在这里插入图片描述

2、创建测试表

psql -d postgres
CREATE TABLE test_table (
    id char(10) NOT NULL,
    code        char(10),
    PRIMARY KEY (id)
);
\d

在这里插入图片描述

3、pg_recvlogical+kafkacat发送数据

pg_recvlogical读取增量数据,并通过kafkacat发送数据到指定的kafka的topic

pg_recvlogical -h 192.168.184.192 -p 5432 -U mydba -d postgres -S slot1 --start -f - | /root/kafkacat/kcat -b 192.168.184.192:9092 -t testdb_topic

在这里插入图片描述
参数解释:
在这里插入图片描述
在这里插入图片描述

4、制造数据

INSERT INTO test_table (id, code)
VALUES
    ('1', '1'),
    ('2', '2'),
    ('3', '3'),
    ('4', '4'),
    ('5', '5'),
    ('6', '6'),
    ('7', '7'),
    ('8', '8'),
    ('9', '9'),
    ('10', '10');

在这里插入图片描述

5、kafka进行消费数据

cd /data/soft/kafka_2.12-2.4.1
bin/kafka-console-consumer.sh --topic testdb_topic --bootstrap-server 192.168.184.192:9092 --from-beginning

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个有趣的人Zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值