pg_xlogdump
功能描述
pg_xlogdump工具用于解析XLOG日志(WAL)。
语法格式
pg_xlogdump [OPTION]... [STARTSEG [ENDSEG]]
STARTSEG:从指定的日志段文件开始读取。这也隐含地决定了要搜索文件的路径以及要使用的时间线。
ENDSEG:指定到哪个日志段文件停止读取。
参数说明
-b, --bkp-details
输出关于备份块的详细信息。
-e, --end=RECPTR
指定停止读取的日志位置,代替读取的日志流的结尾。
-f, --follow
在到达可用 WAL 的末尾之后,保持每秒轮询一次是否有新的 WAL 出现。
-n, --limit=limit
指定显示记录的条目数。
-p, --path=PATH
指定搜索WAL段文件的目录。默认从当前目录的pg_xlog子目录去搜索它们。
-r, --rmgr=RMGR
只显示由指定资源管理器生成的记录。如果把list作为资源管理器名称传递给这个选项,则打印出可用资源管理器名称的列表然后退出。
-s, --start=RECPTR
开始读取日志的位置。默认是从找到的最早的文件的第一个可用日志记录开始。
-S, --size=n
对于共享存储,xlog文件的大小。
-t, --timeline=TLI
从哪个时间线读取日志记录。默认是使用startseg(如果指定)中的值,否则默认为 1。
-V, --version
打印出pg_xlogdump版本并退出。
-w,--write-FPW
设置整页写出到磁盘。
-x, --xid=XID
仅显示指定事务ID的记录。
-z, --stats
显示概括统计信息(记录的数量和尺寸以及全页镜像)而不是显示每个记录。可以选择针对每个记录生成统计信息,而不是针对每个资源管理器生成。
-v, --verbose
输出详细信息。
-?, --help
显示pg_xlogdump命令参数帮助并退出。
使用示例
1、查询pg_xlog目录下面的wal日志。
[vastbase@localhost pg_xlog]$ ll
返回结果为:
total 229376
-rw------- 1 vastbase vastbase 16777216 Oct 13 10:14 000000010000000000000001
-rw------- 1 vastbase vastbase 16777216 Oct 13 10:15 000000010000000000000002
-rw------- 1 vastbase vastbase 16777216 Oct 14 21:08 000000010000000000000003
-rw------- 1 vastbase vastbase 16777216 Oct 16 06:58 000000010000000000000004
-rw------- 1 vastbase vastbase 16777216 Oct 17 08:53 000000010000000000000005
-rw------- 1 vastbase vastbase 16777216 Oct 18 12:32 000000010000000000000006
-rw------- 1 vastbase vastbase 16777216 Oct 19 21:17 000000010000000000000007
-rw------- 1 vastbase vastbase 16777216 Oct 20 23:38 000000010000000000000008
-rw------- 1 vastbase vastbase 16777216 Oct 22 01:55 000000010000000000000009
-rw------- 1 vastbase vastbase 16777216 Oct 23 10:59 00000001000000000000000A
-rw------- 1 vastbase vastbase 16777216 Oct 24 13:01 00000001000000000000000B
-rw------- 1 vastbase vastbase 16777216 Oct 25 15:17 00000001000000000000000C
-rw------- 1 vastbase vastbase 16777216 Oct 27 00:24 00000001000000000000000D
-rw------- 1 vastbase vastbase 16777216 Oct 27 16:25 00000001000000000000000E
drwx------ 2 vastbase vastbase 6 Oct 13 10:14 archive_status
2、展现从 000000010000000000000001到 000000010000000000000003之间的 WAL 日志,-n 表示显示的行数。
pg_xlogdump -b -n2 000000010000000000000001 000000010000000000000003
返回结果为:
REDO @ 0/1000028; LSN 0/10000A8: prev 0/0; xid 0; term 0; len 88; total 122; crc 907798150; desc: XLOG - checkpoint: redo 0/1000028; len 0; next_csn 0; recent_global_xmin 0; tli 1; fpw false; xid 4; oid 10000; multi 2; offset 0; oldest xid 3 in DB 1; oldest running xid 0; oldest xid with epoch having undo 0; shutdown at Thu Oct 13 10:14:51 2022; remove_seg 0/0
REDO @ 0/10000A8; LSN 0/10000D0: prev 0/1000028; xid 1; term 1; len 4; total 38; crc 2563411093; desc: XLOG - nextOid: 18192
3、展现 WAL 中所有的 resource manager 名称。
pg_xlogdump --rmgr=list
4、仅展现 WAL 中资源名称Database 的日志。
pg_xlogdump -r Database -b -n 2 000000010000000000000001 000000010000000000000003
返回结果为:
REDO @ 0/32E82E0; LSN 0/32E8318: prev 0/32E8240; xid 12209; term 1; len 16; total 50; crc 4052575843; desc: Database - create db: copy dir 1/1663 to 16561/1663
REDO @ 0/32F2E10; LSN 0/32F2E48: prev 0/32F2D70; xid 12580; term 1; len 16; total 50; crc 2420045689; desc: Database - create db: copy dir 1/1663 to 16566/1663
5、查看当前LSN。
select pg_current_xlog_location();
返回结果为:
pg_current_xlog_location
--------------------------
0/EB34AD0
(1 row)
6、查看LSN位于哪个WAL文件。
select pg_xlogfile_name('0/EB34AD0');
返回结果为:
pg_xlogfile_name
--------------------------
00000001000000000000000E
(1 row)
7、根据LSN及日志文件可以解析查询日志文件中内容。
例如查询 00000001000000000000000E文件中LSN号为EB34AD0的相关内容命令为:
pg_xlogdump 00000001000000000000000E | grep EB34AD0
示例2: WAL的统计信息。
pg_xlogdump -p $PGDATA/pg_xlog -z -s 0/D42D440 -e 0/D42E738
统计信息如下所示:
统计信息中各列的解释如下所示:
- Type:xlog中的日志类型。
- N:对应日志类型的次数及占比。
- Record size:记录的大小及占比。
- FPI size:full page image大小及占比。
- combined size:记录和FPI的大小总和。
Type N (%) Record size (%) FPI size (%) Combined size (%)
---- - --- ----------- --- -------- --- ------------- ---
XLOG 9 ( 16.36) 1368 ( 40.43) 0 ( 0.00) 1368 ( 40.43)
Transaction 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Storage 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
CLOG 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Database 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Tablespace 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
MultiXact 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
RelMap 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Standby 18 ( 32.73) 1008 ( 29.79) 0 ( 0.00) 1008 ( 29.79)
Heap2 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Heap 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Btree 28 ( 50.91) 1008 ( 29.79) 0 ( 0.00) 1008 ( 29.79)
Hash 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Gin 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Gist 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Sequence 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
SPGist 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Slot 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Heap3 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
Barrier 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
MOT 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UHeap 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UHeap2 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UndoLog 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UHeapUndo 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UndoAction 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UBtree 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
UBtree2 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
SegpageStorage 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
ReplicationOrigin 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
CompressionRelation 0 ( 0.00) 0 ( 0.00) 0 ( 0.00) 0 ( 0.00)
-------- -------- -------- --------
Total 55 3384 [100.00%] 0 [0.00%] 3384 [100%]