pg数据库实时同步之---wal2json

306 阅读1分钟

在大数据领域,数据分析和日志解析是关键任务之一。为了更高高效 地处理和解析PostgreSQL数据库的安装日志,我们可以助插件wal2json。 wal2json是逻辑解码插件,使用该插件可以访问由INSERT和UPDATE生成的元组,解析WAL中的内容。 wal2json插件会在每个事务中生成一个JSON对象。JSON对象中提供了所有新/旧元组,额外选项还可以包括事务时间戳、限定架构、数据类型、事务ID等属性。

一:安装wal2json git clone github.com/eulerto/wal…

cd wal2json make && sudo make install

修改pg配置文件: wal_level = logical max_wal_senders = 10 max_replication_slots = 10 shared_preload_libraries = 'wal2json_streaming' 重启pg: sudo service postgresql restart

二:使用wal2json 1 创建slot /opt/gitlab/embedded/bin/pg_recvlogical -h xx.xx.xx.xx -p 5432 -U username -d database --slot basic_message_wal2json_slot --create-slot -P wal2json

2 消费slot: pg_recvlogical -d postgres --slot test_slot --start -o pretty-print=1 -o add-msg-prefixes=wal2json -f -

3 删除slot: /opt/gitlab/embedded/bin/pg_recvlogical -h xx.xx.xx.xx -p 5432 -U usename -d database --slot basic_message_wal2json_slot --drop-slot

4 pg端启动监听程序,将wal2joson数据写入到kafka,使用kcat nohup /opt/gitlab/embedded/bin/pg_recvlogical -h xx.xx.xx.xx -p 5432 -U usename -d database --slot bus_frp_rdf_wal2json_slot -o include-timestamp=true -o pretty-print=1 -o format-version=2 -o add-tables=public.xxxx --start -f - | kcat -P -b etl01:9092 -t topic >>/home/etl/topic.txt 2>&1 & disown