使用tunnel同步PG数据到kafka
admin
2023-03-02 09:22:14
0

tunnel同步PG数据到kafka

来自哈罗单车开源的组件。支持同步PG数据到kafka或者ES。


 

https://github.com/hellobike/tunnel

 

tunnel整体的部署比较简单的

需要事先部署好zkkafka(我下面演示的是单节点的zkkafka

 

节点部署关系:

192.168.2.4   部署zkkafkapg10运行在1921端口

192.168.2.189 部署tunnel

 

 

确保已开启PG的逻辑复制

wal_level = 'logical';

max_replication_slots = 20

注意这个设置要重启PG进程的

 

然后,创建测试库表和同步用的账号

CREATE DATABASE test_database;

\c test_database

create table test_1 (id int primary key , name char(40));

create table test_2 (id int primary key , name char(40));

 

CREATE ROLE test_rep LOGIN ENCRYPTED PASSWORD 'xxxx' REPLICATION;

GRANT CONNECT ON DATABASE test_database to test_rep;

 

vim pg_hba.conf 增加2行配置:

host    all                   test_rep        192.168.2.0/24         md5

host    replication     test_rep        192.168.2.0/24         md5

然后 reload PG

 

192.168.2.189 机器上去 编译tunnel

注意: tunnel的启动需要事先安装好oracle jdk 1.8

 

git clone https://github.com/hellobike/tunnel

cd tunnel

mvn clean package -Dmaven.test.skip=true

cd target

unzip AppTunnelService.zip

cd AppTunnelService

 

vim conf/test.yml 内容如下:

tunnel_subscribe_config:

  pg_dump_path: '/usr/local/pgsql-10.10/bin/pg_dump'

  subscribes:

  - slotName: slot_for_test

    pgConnConf:

      host: 192.168.2.4

      port: 1921

      database: test_database

      user: test_rep

      password: xxxx

    rules:

    - {table: test_1, pks: ['id'], topic: test_1_logs}

    - {table: test_2, pks: ['id'], topic: test_2_logs}

    kafkaConf:

      addrs:

      - 192.168.2.4:9092

tunnel_zookeeper_address: 192.168.2.4:2181

 

前台启动:

java -server -classpath conf/*:lib/* com.hellobike.base.tunnel.TunnelLauncher -u false -c cfg.properties -p 7788     # 暴露prometheus metric7788端口(配置监控不是这里的重点,也很简单,暂时先跳过)


然后,我们再在PG10上面的test_database2张表随便造些数据,然后可以看到kafka里面已经有数据了(下图是通过kafkamanager kafka-eagle的结果)。

使用tunnel同步PG数据到kafka



使用tunnel同步PG数据到kafka



格式化下,数据就是这样的:

UPDATE的记录的样子:

{

         "dataList": [{

                   "dataType": "integer",

                   "name": "id",

                   "value": "1111"

         }, {

                   "dataType": "character",

                   "name": "name",

                   "value": "大狗蛋 "

         }],

         "eventType": "UPDATE",

         "lsn": 10503246616,

         "schema": "public",

         "table": "test_1"

}

 

DELETE的记录的样子:

{

         "dataList": [{

                   "dataType": "integer",

                   "name": "id",

                   "value": "3"

         }],

         "eventType": "DELETE",

         "lsn": 10503247064,

         "schema": "public",

         "table": "test_1"

}

相关内容

热门资讯

榴莲遭“仅退款”,商家花500... 极目新闻记者 王鹏2026年5月7日,河南濮阳一冷冻榴莲果肉商家反映,自己遭遇山东德州买家恶意“仅退...
4只皮皮虾1035元店主事发次... 近日,有网友反映其5月4日在三亚一家海鲜店宵夜时仅4只皮皮虾就花费1035元,价格过高,质疑店家存在...
分析师称《GTA6》发售主机或... IT之家 5 月 8 日消息,据游戏媒体 Insider Gaming 昨天报道,Circana 分...
利拓光电取得高稳定性激光器封装... 国家知识产权局信息显示,深圳市利拓光电有限公司取得一项名为“一种高稳定性激光器的封装结构”的专利,授...
别被“120W闪充”骗了:央视... 【太平洋科技快讯】央视新闻近期调查发现,市面上大量标称120W、66W的快充头存在严重功率虚标问题,...
古巴政府:美国新一轮制裁措施是... 新华社哈瓦那5月7日电 古巴外交部7日发布公告说,美国对古巴新一轮制裁措施是“经济侵略”行为,企图制...
邮轮暴发汉坦病毒疫情,世卫确认... 据凤凰卫视报道,大西洋邮轮“洪迪厄斯”号暴发汉坦病毒疫情,世界卫生组识5月7日证实,船上共有5宗确诊...
内蒙古赤峰两村半个多世纪的土地... 澎湃新闻记者 王选辉争议土地大北叉沟。本文图均为 受访者 提供备受社会关注的“赤峰两村半个多世纪的土...
冥王星5月8日开启逆行 持续约... 被“逐出”太阳系大行星序列的冥王星5月8日将结束顺行,开启为期约5个月的逆行。这也是2026年冥王星...
夸大AI功能被起诉 苹果2.5... 当地时间5月5日,因夸大AI系统“苹果智能”(Apple Intelligence)的能力,误导数百...