PG数据同步到kafka

0    360    1

Tags:

👉 本文共约2358个字,系统预计阅读时间或需9分钟。

简介

目前CDC(Change Data Capture)工具还是比较多的 ,现在有部分增量数据同步工具是基于触发器实现的,把数据库的变化记录到某个系统表中,然后在客户端建立缓冲,并定期将变化push到接收端,接收端和发送端建立通道,并定期pull新的数据变化,并在目标数据库回放 。

但因为使用了触发器会影响生产环境的性能,这点可能无法接受 ,其他的增量数据同步工具中占比比较大的一类,是基于kafka来实现的。例如RedHat开源的 Debezium。通过抽取数据库日志来获取变更,实现增量数据同步。

其它工具也可以将PG同步到kafka,搜索了一下,列举如下:

下面是一个PostgreSQL数据同步至kafka 的例子。

环境申请

安装kafka环境

安装java

安装kafka

从kafka 2.8.0开始,自带zookeeper,无需额外安装ZooKeeper。

下载:https://kafka.apache.org/downloads.html , 大约100MB

查看java进程:

kafka默认占用9092端口,ZK默认占用2181端口。

kafka日志:

测试一下,在服务器上创建一个topic为test,然后生产几条信息:

数据库端操作

postgres 逻辑解码, 可以用jsonc或wal2json。

程序 jsoncdc(https://pgxn.org/dist/jsoncdc/)依赖于rust, 需要先安装 rust。

这里使用wal2json插件。

数据库安装wal2json

github:https://github.com/eulerto/wal2json

wal2json is an output plugin for logical decoding. It means that the plugin have access to tuples produced by INSERT and UPDATE. Also, UPDATE/DELETE old row versions can be accessed depending on the configured replica identity. Changes can be consumed using the streaming protocol (logical replication slots) or by a special SQL API.

wal2json可以提供基于PG库级别的DML日志挖掘工作。

postgresql.conf里添加shared_preload_libraries = 'wal2json.so’并修改wal_level = logical,之后重启数据库。

如果是rpm安装的pg,最好使用rpm安装wal2json。如果是源码编译安装的pg,最好源码安装wal2json。

In Red Hat/CentOS:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复