PostgreSQL自带的命令行工具13- pg_waldump

PostgreSQL自带的命令行工具13- pg_waldump

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

pg_waldump 是 PostgreSQL 的一个实用工具,用于查看和分析 Write-Ahead Logging (WAL) 文件的内容。WAL 是 PostgreSQL 用于保证事务日志的完整性和恢复能力的一种技术。每次数据库事务提交时,变更都会先被写入 WAL 文件。在发生故障时,WAL 文件用于恢复数据库到最后一次一致的状态。pg_waldump 提供了一种方式,来直观地查看这些 WAL 文件中的记录,帮助开发者和数据库管理员理解数据库变动和进行故障诊断。

通过help查看帮助文档。

[pg16@test ~]$ pg_waldump --help
pg_waldump decodes and displays PostgreSQL write-ahead logs for debugging.

Usage:
  pg_waldump [OPTION]... [STARTSEG [ENDSEG]]

Options:
  -b, --bkp-details      output detailed information about backup blocks
  -B, --block=N          with --relation, only show records that modify block N
  -e, --end=RECPTR       stop reading at WAL location RECPTR
  -f, --follow           keep retrying after reaching end of WAL
  -F, --fork=FORK        only show records that modify blocks in fork FORK;
                         valid names are main, fsm, vm, init
  -n, --limit=N          number of records to display
  -p, --path=PATH        directory in which to find WAL segment files or a
                         directory with a ./pg_wal that contains such files
                         (default: current directory, ./pg_wal, $PGDATA/pg_wal)
  -q, --quiet            do not print any output, except for errors
  -r, --rmgr=RMGR        only show records generated by resource manager RMGR;
                         use --rmgr=list to list valid resource manager names
  -R, --relation=T/D/R   only show records that modify blocks in relation T/D/R
  -s, --start=RECPTR     start reading at WAL location RECPTR
  -t, --timeline=TLI     timeline from which to read WAL records
                         (default: 1 or the value used in STARTSEG)
  -V, --version          output version information, then exit
  -w, --fullpage         only show records with a full page write
  -x, --xid=XID          only show records with transaction ID XID
  -z, --stats[=record]   show statistics instead of records
                         (optionally, show per-record statistics)
  --save-fullpage=DIR    save full page images to DIR
  -?, --help             show this help, then exit

Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>

基本用法

pg_waldump [选项]... <WAL 文件名或目录>

常用选项

  • -f, --follow:连续输出 WAL 记录,类似于 tail -f 命令。
  • -n, --limit:限制输出的记录数量。
  • -p, --path:指定 WAL 文件的搜索目录。
  • -r, --rmgr:只显示指定资源管理器(rmgr)的记录。
  • -s, --start:从指定的 LSN (Log Sequence Number) 开始输出。
  • -t, --timeline:指定要阅读的时间线。
  • -V, --version:输出版本信息。
  • -x, --xid:只显示指定事务 ID 的记录。
  • -z, --stats:在输出的末尾显示统计信息。
  • --end:结束于指定的 LSN (Log Sequence Number)。

示例1

查看指定 WAL 文件的内容。如查看 000000010000000000000034的内容

[pg16@test archivelog]$ pg_waldump /home/pg16/archivelog/000000010000000000000034

在这里插入图片描述

示例2

查看 000000010000000000000034的内容前10行。

[pg16@test archivelog]$ pg_waldump -n 10 /home/pg16/archivelog/000000010000000000000034  
rmgr: Heap        len (rec/tot):    171/   171, tx:      15301, lsn: 0/340006F0, prev 0/33FFE700, desc: UPDATE old_xmax: 15301, old_off: 33, old_infobits: [], flags: 0x01, new_xmax: 0, new_off: 3, blkref #0: rel 1663/16505/16579 blk 16556, blkref #1: rel 1663/16505/16579 blk 5900
rmgr: Btree       len (rec/tot):     64/    64, tx:      15301, lsn: 0/340007A0, prev 0/340006F0, desc: INSERT_LEAF off: 158, blkref #0: rel 1663/16505/16587 blk 989
rmgr: Heap        len (rec/tot):     79/    79, tx:      15297, lsn: 0/340007E0, prev 0/340007A0, desc: INSERT off: 153, flags: 0x00, blkref #0: rel 1663/16505/16589 blk 89
rmgr: Transaction len (rec/tot):     34/    34, tx:      15296, lsn: 0/34000830, prev 0/340007E0, desc: COMMIT 2024-05-05 21:27:33.826619 PDT
rmgr: Transaction len (rec/tot):     34/    34, tx:      15297, lsn: 0/34000858, prev 0/34000830, desc: COMMIT 2024-05-05 21:27:33.826634 PDT
rmgr: Heap        len (rec/tot):     72/    72, tx:      15294, lsn: 0/34000880, prev 0/34000858, desc: HOT_UPDATE old_xmax: 15294, old_off: 92, old_infobits: [], flags: 0x20, new_xmax: 0, new_off: 94, blkref #0: rel 1663/16505/16580 blk 0
rmgr: Transaction len (rec/tot):     34/    34, tx:      15293, lsn: 0/340008C8, prev 0/34000880, desc: COMMIT 2024-05-05 21:27:33.826720 PDT
rmgr: Heap2       len (rec/tot):     57/    57, tx:          0, lsn: 0/340008F0, prev 0/340008C8, desc: PRUNE snapshotConflictHorizon: 5174, nredirected: 0, ndead: 1, nunused: 0, redirected: [], dead: [20], unused: [], blkref #0: rel 1663/16505/16579 blk 13566
rmgr: Heap        len (rec/tot):     74/    74, tx:      15302, lsn: 0/34000930, prev 0/340008F0, desc: HOT_UPDATE old_xmax: 15302, old_off: 7, old_infobits: [], flags: 0x60, new_xmax: 0, new_off: 62, blkref #0: rel 1663/16505/16579 blk 13566
rmgr: Heap        len (rec/tot):     79/    79, tx:      15294, lsn: 0/34000980, prev 0/34000930, desc: INSERT off: 17, flags: 0x00, blkref #0: rel 1663/16505/16589 blk 93

这会输出 000000010000000000000034 WAL 文件中的所有记录。输出中包括每条记录的类型、大小、事务 ID 以及实际的日志数据。

注意事项

  • pg_waldump 是一个底层工具,主要用于调试和分析,正常的数据库操作和维护不需要它。
  • 在使用 pg_waldump 时,需要对 WAL 记录的格式和内容有一定的了解。
  • WAL 文件通常位于 PostgreSQL 的数据目录下的 pg_wal 目录中(在旧版 PostgreSQL 中是 pg_xlog)。

pg_waldump 为深入理解 PostgreSQL 的工作原理和事务日志提供了窗口,但它更多地是面向有经验的数据库管理员和开发者。

谨记:心存敬畏,行有所止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值