
读取MYSQL的binlog 并将其解析为可读的日志是一件简单的事情,mysqlbinlog 命令就可以将bin 日志解析, 那postgresql是否可以将pg_wal 中的日志进行解析,并且提供一些特殊的功能,如题目给出的,想查询某个时间短插入的数据量。
pg_waldump 可以解决这个问题,通过pg_waldump来解析pg_wal 日志来分析和解决一些问题。
pg_waldump 是PG 内部用来对 wal日志进行查看的命令,值需要pg_waldump执行命令对于要读取的日志有只读的权限即可。
在 pg_wal 中日志是有管理类型的,也就是日志记录的东西是什么的标签

下面我们进行一系列的操作创建一个数据库创建一个表,插入三条记录
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

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

被折叠的 条评论
为什么被折叠?



