PostgreSQL 通过pg_waldump 来分析pg_wal日志

本文介绍如何使用pg_waldump工具解析PostgreSQL的pg_wal日志,以查询特定时间段内的数据变化情况。通过具体实例展示了不同类型的记录管理器(rmgr)的作用及如何定位特定事务。

28d482866dea1c5a197d1b643d47eae1.png

读取MYSQL的binlog 并将其解析为可读的日志是一件简单的事情,mysqlbinlog 命令就可以将bin 日志解析, 那postgresql是否可以将pg_wal 中的日志进行解析,并且提供一些特殊的功能,如题目给出的,想查询某个时间短插入的数据量。

pg_waldump 可以解决这个问题,通过pg_waldump来解析pg_wal 日志来分析和解决一些问题。

pg_waldump 是PG 内部用来对 wal日志进行查看的命令,值需要pg_waldump执行命令对于要读取的日志有只读的权限即可。

在 pg_wal 中日志是有管理类型的,也就是日志记录的东西是什么的标签

47e00eae8ac98289d7229dff0a635e6b.png

下面我们进行一系列的操作创建一个数据库创建一个表,插入三条记录

postgres=# 

postgres=# select pg_current_wal_lsn();

 pg_current_wal_lsn 

--------------------

 1/7C000328

(1 row)

postgres=# create database testn;

CREATE DATABASE

postgres=# select pg_current_wal_lsn();

 pg_current_wal_lsn 

--------------------

 1/7C001CF8

(1 row)

postgres=# create table idd (id int);

CREATE TABLE

postgres=# 

postgres=# select pg_current_wal_lsn();

 pg_current_wal_lsn 

--------------------

 1/7C019640

(1 row)

postgres=# insert into idd values (1);

INSERT 0 1

postgres=# select pg_current_wal_lsn();

 pg_current_wal_lsn 

--------------------

 1/7C0196E0

(1 row)

postgres=# insert into idd values (2);

INSERT 0 1

postgres=# select pg_current_wal_lsn();

 pg_current_wal_lsn 

--------------------

 1/7C019748

(1 row)

postgres=# insert into idd values (3);

INSERT 0 1

postgres=# select pg_current_wal_lsn();

 pg_current_wal_lsn 

--------------------

 1/7C0197B0

(1 row)

postgres=# select pg_current_wal_lsn(),pg_walfile_name(pg_current_wal_lsn()),pg_walfile_name_offset(pg_current_wal_lsn());

 pg_current_wal_lsn |     pg_walfile_name      |      pg_walfile_name_offset       

--------------------+--------------------------+-----------------------------------

 1/7C0197E8         | 00000002000000010000001F | (00000002000000010000001F,104424)

(1 row)

最后通过pg_wal的一些函数,查询当前操作结束的lsn 号,以及pg_wal 的文件名。 粗体含有添加的注释

pg_waldump  /pgdata/data/pg_wal/00000002000000010000001F  -s 1/7C000328  

rmgr: Heap        len (rec/tot):     54/  5394, tx:     464894, lsn: 1/7C000328, prev 1/7C0002F0, desc: INSERT off 21, blkref #0: rel 1664/0/1262 blk 0 FPW

rmgr: Btree       len (rec/tot):     53/   369, tx:     464894, lsn: 1/7C001840, prev 1/7C000328, desc: INSERT_LEAF off 11, blkref #0: rel 1664/0/2671 blk 1 FPW

rmgr: Btree       len (rec/tot):     53/   313, tx:     464894, lsn: 1/7C0019B8, prev 1/7C001840, desc: INSERT_LEAF off 11, blkref #0: rel 1664/0/2672 blk 1 FPW

rmgr: Standby     len (rec/tot):     54/    54, tx:          0, lsn: 1/7C001AF8, prev 1/7C0019B8, desc: RUNNING_XACTS nextXid 464895 latestCompletedXid 464893 oldestRunningXid 464894; 1 xacts: 464894

rmgr: XLOG        len (rec/tot):    106/   106, tx:          0, lsn: 1/7C001B30, prev 1/7C001AF8, desc: CHECKPOINT_ONLINE redo 1/7C001AF8; tli 2; prev tl

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值