xlog、wal 分析工具 wal2json
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相关推荐
- Android日志输出到控制台、文件(XLog开源日志工具)
Android日志输出到控制台.文件(XLog开源日志工具) Android项目开发中,需要将Log同时输出到控制台 与 文件,并要求将日志文件压缩并上传到远程服务端(便于分析App使用过程中用户反馈 ...
- 程序分析工具gprof介绍
程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析.程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容. ...
- IBM公司新推一个基于云计算的Web分析工具
据外媒报道,IBM最新推出了一个Web分析工具,结合了其现有的基于B/S架构的专业数据度量和分析工具 CoreMetrics和营销分析服务Unica.IBM在去年耗资4.8亿美元收购Unica,帮助企 ...
- java 自带thread分析工具_java自带的jvm分析工具
这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了.上网搜了搜,发现下面这些是比较常用的,然后我在机器上试试了,把结果也贴出来哈. ...
- 日志分析工具splunt
实验环境 网关 classroom 172.25.8.254 workstation 172.25.8.9 server a-jeth0 172.25.8.10-外网 eth1 192.168.0 ...
- [原创]Android Monkey 在线日志分析工具开发
[原创]Android Monkey 在线日志分析工具开发 在移动App测试过程中,Monkey测试是我们发现潜在问题的一种非常有效手段,但是Android原生的Monkey有其天然的不足,数据不能有 ...
- LogMiner日志分析工具的使用
1.安装logminer: 要安装LogMiner工具,必须首先要运行下面这样两个脚本, $ORACLE_HOME/rdbms/admin/dbmslm.sql $ ...
- microbiomeMarker:整合多种biomarker分析工具的R包
昨天交流群内大神分享了这个包,看了一下功能还挺多. (ps: 每篇文章最后都有我的微信号,为什么总有人不认真看完文章,就给我留言说找不到我的微信呢) microbiomeMarker整合了多种biom ...
- Nature Methods:宏基因组物种组成分析工具MetaPhlAn2
文章目录 宏基因组物种组成分析工具MetaPhlAn2 导读 主要结果 图1:MetaPhlAn2可以准确地重建鸟枪法宏基因组的分类组成 Reference 扩展阅读 猜你喜欢 写在后面 宏基因组物种 ...
最新文章
- 秒懂QPS、TPS、PV、UV、GMV、IP、RPS!
- 大数据WEB工具Hue
- antlr4 idea插件_正则都搞不定、我还有Antlr4解析器
- Java后端学习路线【哔哩哔哩网站】【Java基础、SSM框架、Maven、Mysql、Idea的使用、Springboot、Sprinfcloud、设计模式】
- Hadoop依赖包处理方式
- ROS学习(十七)安装ARDUINO IDE使用rosserial
- PowerPoint 蜜蜂跳“8”字舞实例
- Java 生成二维码实战
- PHP安装kafka扩展
- 英语基础语法学习笔记 0
- D3.js 绘制地图
- Docsify支持Markdown多种流程图
- T1076 正常血压(信息学一本通C++)
- 应届生如何准备校招,用我这一年的校招经历告诉你
- html5游戏猪打狼,H5 js锅打灰太狼
- 信息系统项目管理:项目经理担任什么样的角色?
- [附源码]SSM计算机毕业设计宠物寻回系统JAVA
- Q5 波士顿市场成长-分额矩阵
- spring boot 微服务入门
- 主流电脑配置的通用引导文件,包含CLOVER与OpenCorer双引导