os: centos 7.4
db: postgresql 10.11

版本

# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
#
#
# yum list installed |grep -i postgresql
postgresql10.x86_64                10.11-2PGDG.rhel7                   @pgdg10
postgresql10-contrib.x86_64        10.11-2PGDG.rhel7                   @pgdg10
postgresql10-debuginfo.x86_64      10.11-2PGDG.rhel7                   @pgdg10
postgresql10-devel.x86_64          10.11-2PGDG.rhel7                   @pgdg10
postgresql10-docs.x86_64           10.11-2PGDG.rhel7                   @pgdg10
postgresql10-libs.x86_64           10.11-2PGDG.rhel7                   @pgdg10
postgresql10-odbc.x86_64           12.00.0000-1PGDG.rhel7              @pgdg10
postgresql10-plperl.x86_64         10.11-2PGDG.rhel7                   @pgdg10
postgresql10-plpython.x86_64       10.11-2PGDG.rhel7                   @pgdg10
postgresql10-pltcl.x86_64          10.11-2PGDG.rhel7                   @pgdg10
postgresql10-server.x86_64         10.11-2PGDG.rhel7                   @pgdg10
postgresql10-tcl.x86_64            2.4.0-1.rhel7                       @pgdg10
postgresql10-tcl-debuginfo.x86_64  2.3.1-1.rhel7                       @pgdg10
postgresql10-test.x86_64           10.11-2PGDG.rhel7                   @pgdg10 # su - postgres
Last login: Wed Jan 15 18:34:12 CST 2020 on pts/0
$
$
$ psql -c "select version();"version
----------------------------------------------------------------------------------------------------------PostgreSQL 10.11 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)

下载安装

# su - postgres
# yum install wal2json10# repoquery -ql wal2json10.x86_64
/usr/pgsql-10/doc/extension/README-wal2json.md
/usr/pgsql-10/lib/wal2json.so
# vi /var/lib/pgsql/10/data/postgresql.conf
shared_preload_libraries = 'wal2json'
wal_level = logical
max_wal_senders = 20
max_replication_slots = 20# systemctl restart postgresql-10.service

初步使用

第一个窗口

# su - postgres
$ pg_recvlogical -d pgbenchdb --slot wal2json_slot --create-slot -P wal2json
$ pg_recvlogical -d pgbenchdb --slot wal2json_slot --start -o pretty-print=1 -f -

第二个窗口

# su - postgres
$ psql pgbenchdbpgbenchdb=# CREATE TABLE table_with_pk (a SERIAL, b VARCHAR(30), c TIMESTAMP NOT NULL, PRIMARY KEY(a, c));
CREATE TABLE table_without_pk (a SERIAL, b NUMERIC(5,2), c TEXT);BEGIN;
INSERT INTO table_with_pk (b, c) VALUES('Backup and Restore', now());
INSERT INTO table_with_pk (b, c) VALUES('Tuning', now());
INSERT INTO table_with_pk (b, c) VALUES('Replication', now());DELETE FROM table_with_pk WHERE a < 3;INSERT INTO table_without_pk (b, c) VALUES(2.34, 'Tapir');
-- it is not added to stream because there isn't a pk or a replica identity
UPDATE table_without_pk SET c = 'Anta' WHERE c = 'Tapir';
COMMIT;

这时候第一个窗口的输出如下


{"change": []
}
{"change": []
}WARNING:  table "table_without_pk" without primary key or replica identity is nothing
{"change": [{"kind": "insert","schema": "public","table": "table_with_pk","columnnames": ["a", "b", "c"],"columntypes": ["integer", "character varying(30)", "timestamp without time zone"],"columnvalues": [1, "Backup and Restore", "2020-04-26 09:46:58.957681"]},{"kind": "insert","schema": "public","table": "table_with_pk","columnnames": ["a", "b", "c"],"columntypes": ["integer", "character varying(30)", "timestamp without time zone"],"columnvalues": [2, "Tuning", "2020-04-26 09:46:58.957681"]},{"kind": "insert","schema": "public","table": "table_with_pk","columnnames": ["a", "b", "c"],"columntypes": ["integer", "character varying(30)", "timestamp without time zone"],"columnvalues": [3, "Replication", "2020-04-26 09:46:58.957681"]},{"kind": "delete","schema": "public","table": "table_with_pk","oldkeys": {"keynames": ["a", "c"],"keytypes": ["integer", "timestamp without time zone"],"keyvalues": [1, "2020-04-26 09:46:58.957681"]}},{"kind": "delete","schema": "public","table": "table_with_pk","oldkeys": {"keynames": ["a", "c"],"keytypes": ["integer", "timestamp without time zone"],"keyvalues": [2, "2020-04-26 09:46:58.957681"]}},{"kind": "insert","schema": "public","table": "table_without_pk","columnnames": ["a", "b", "c"],"columntypes": ["integer", "numeric(5,2)", "text"],"columnvalues": [1, 2.34, "Tapir"]}]
}

第一个窗口中删除刚才创建的 slot

Ctrl+C
$ pg_recvlogical -d pgbenchdb --slot wal2json_slot --drop-slot

更详细用法参考 https://github.com/eulerto/wal2json

参考:
https://github.com/eulerto/wal2json
https://debezium.io/documentation/reference/1.1/connectors/postgresql.html

xlog、wal 分析工具 wal2json相关推荐

  1. Android日志输出到控制台、文件(XLog开源日志工具)

    Android日志输出到控制台.文件(XLog开源日志工具) Android项目开发中,需要将Log同时输出到控制台 与 文件,并要求将日志文件压缩并上传到远程服务端(便于分析App使用过程中用户反馈 ...

  2. 程序分析工具gprof介绍

    程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析.程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容. ...

  3. IBM公司新推一个基于云计算的Web分析工具

    据外媒报道,IBM最新推出了一个Web分析工具,结合了其现有的基于B/S架构的专业数据度量和分析工具 CoreMetrics和营销分析服务Unica.IBM在去年耗资4.8亿美元收购Unica,帮助企 ...

  4. java 自带thread分析工具_java自带的jvm分析工具

    这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了.上网搜了搜,发现下面这些是比较常用的,然后我在机器上试试了,把结果也贴出来哈. ...

  5. 日志分析工具splunt

    实验环境 网关  classroom  172.25.8.254 workstation 172.25.8.9 server a-jeth0 172.25.8.10-外网 eth1 192.168.0 ...

  6. [原创]Android Monkey 在线日志分析工具开发

    [原创]Android Monkey 在线日志分析工具开发 在移动App测试过程中,Monkey测试是我们发现潜在问题的一种非常有效手段,但是Android原生的Monkey有其天然的不足,数据不能有 ...

  7. LogMiner日志分析工具的使用

    1.安装logminer:       要安装LogMiner工具,必须首先要运行下面这样两个脚本,       $ORACLE_HOME/rdbms/admin/dbmslm.sql       $ ...

  8. microbiomeMarker:整合多种biomarker分析工具的R包

    昨天交流群内大神分享了这个包,看了一下功能还挺多. (ps: 每篇文章最后都有我的微信号,为什么总有人不认真看完文章,就给我留言说找不到我的微信呢) microbiomeMarker整合了多种biom ...

  9. Nature Methods:宏基因组物种组成分析工具MetaPhlAn2

    文章目录 宏基因组物种组成分析工具MetaPhlAn2 导读 主要结果 图1:MetaPhlAn2可以准确地重建鸟枪法宏基因组的分类组成 Reference 扩展阅读 猜你喜欢 写在后面 宏基因组物种 ...

最新文章

  1. 秒懂QPS、TPS、PV、UV、GMV、IP、RPS!
  2. 大数据WEB工具Hue
  3. antlr4 idea插件_正则都搞不定、我还有Antlr4解析器
  4. Java后端学习路线【哔哩哔哩网站】【Java基础、SSM框架、Maven、Mysql、Idea的使用、Springboot、Sprinfcloud、设计模式】
  5. Hadoop依赖包处理方式
  6. ROS学习(十七)安装ARDUINO IDE使用rosserial
  7. PowerPoint 蜜蜂跳“8”字舞实例
  8. Java 生成二维码实战
  9. PHP安装kafka扩展
  10. 英语基础语法学习笔记 0
  11. D3.js 绘制地图
  12. Docsify支持Markdown多种流程图
  13. T1076 正常血压(信息学一本通C++)
  14. 应届生如何准备校招,用我这一年的校招经历告诉你
  15. html5游戏猪打狼,H5 js锅打灰太狼
  16. 信息系统项目管理:项目经理担任什么样的角色?
  17. [附源码]SSM计算机毕业设计宠物寻回系统JAVA
  18. Q5 波士顿市场成长-分额矩阵
  19. spring boot 微服务入门
  20. 主流电脑配置的通用引导文件,包含CLOVER与OpenCorer双引导

热门文章

  1. 关于利用js创建按钮点击事件获取input值的问题
  2. 农夫、狼、羊、菜过河问题
  3. 魔搭 modelscope
  4. 测试人生 | 双非学历入职名企大厂还薪资翻倍?
  5. Windows客户端开发面经(2021-03)
  6. linux命令怎么寻找文件夹,linux怎么用命令寻找文件夹
  7. Android保存图片到手机并刷新相册的两种方法实现
  8. eclipse运行python中文乱码处理
  9. R语言使用dplyr包的arrange函数对dataframe数据进行排序
  10. js之pc端网页特效,获取元素偏移,获取元素大小,offset和style区别以及案例