暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

磐维数据库pg_xlogdump工具使用指南

原创 磐维数据库 3天前
29


  1. 功能介绍

pg_xlogdump是一个用于解码并显示 磐维数据库的预写式日志 (WAL) 的工具。此工具只能由安装该服务器的用户使用,因为它要求对数据目录的只读访问。

  1. 前提条件

保证数据库目录存在且路径正确。

  1. 语法

pg_xlogdump [OPTION]... [STARTSEG [ENDSEG]]

  1. 参数说明

OPTION取值如下所示:

  • -b, --bkp-details

输出有关备份块的详细信息。

  • -e, --end=RECPTR

读取到日志的指定位置。

  • -f, --follow

在到达指定 WAL 的末尾后,继续解析下一个文件。

  • -n, --limit=N

指定要显示的日志记录的数量。

  • -p, --path=PATH

指定 WAL 日志存放的目录。默认路径为 ./pg_xlog 。

  • -r, --rmgr=RMGR

仅显示资源管理器生成的记录。若参数设置为 -r = list 则列出有效的资源管理器名称。

  • -s, --start=RECPTR

指定日志记录的读取位置。默认从所找到的最早的文件的第一个可用日志记录开始读取。

  • -S, --size=n

设置解析资源池化模式下日志时的大小(不包括 ctl 信息长度)。 默认大小为 512 1024 1024 * 1024 (512GB)

  • -t, --timeline=TLI

选择指定的 timeline 读取日志记录。默认使用 1 或 STARTSEG 。

  • -V, --version

显示版本信息。

  • -w, --write-FPW

显示整页写入的信息,使用该参数时应同时使用 -b 。

  • -x XID

仅显示给定的事物 ID 记录。

  • -z, --stats

显示插入记录的统计信息而不显示每条记录。

  • -v, --verbose

输出记录的详细信息。

  • -?, --help

打印帮助信息。

  • --enable-dss

资源池化参数,开启资源池化模式。

  • --socketpath=SOCKETPATH

资源池化参数,dss 实例进程使用的 socket 文件路径。

STARTSEG:

指定开始读取的 WAL 段文件名(如 000000010000000000000001)。

ENDSEG:

指定结束读取的 WAL 段文件名。若省略,则默认读取到可用日志的末尾。

  1. 常用使用场景与示例

模拟数据,创建表并增加主键

create table test_xlogdump(id int, name varchar(10),insert_time timestamp not null default now());

alter table test_xlogdump add primary key(id);

insert into test_xlogdump values(1,'panweidb1');

  • 查看 WAL 文件的基本内容

pg_xlogdump -p $PGDATA/pg_xlog 000000010000000500000062

输出会包含每条记录的 REDO @ LSN、xid、操作描述(desc)等信息

  • 追踪某个事务(XID)的 WAL 记录

某个事务 ID(例如通过查询 xmin获得),查看它产生了哪些 WAL:

pg_xlogdump -p $PGDATA/pg_xlog -x 47476 000000010000000500000062

REDO @ 5/62004418; LSN 5/62004488: prev 5/620041D8; xid 47476; term 603; len 11; total 105; crc 2232514816; desc: Heap - XLOG_HEAP_INSERT insert(init): pd_xid_base 47473 off 1, blkref #0: rel 1663/20116/187899/-1/0, forknum:0 storage HEAP DISK blk 0 lastlsn 0/0

REDO @ 5/62004488; LSN 5/620044F0: prev 5/62004418; xid 47476; term 603; len 8; total 104; crc 1015726416; desc: Btree - lev 0, blkref #0: rel 1663/20116/187903/-1/0, forknum:0 storage HEAP DISK blk 1 lastlsn 0/0, blkref #2: rel 1663/20116/187903/-1/0, forknum:0 storage HEAP DISK blk 0 lastlsn 5/62003D58

REDO @ 5/620044F0; LSN 5/62004548: prev 5/62004488; xid 47476; term 603; len 2; total 82; crc 1111253163; desc: Btree - insert leaf: off 1, blkref #0: rel 1663/20116/187903/-1/0, forknum:0 storage HEAP DISK blk 1 lastlsn 5/620044F0

REDO @ 5/62004548; LSN 5/62004588: prev 5/620044F0; xid 47476; term 603; len 24; total 58; crc 3219609199; desc: Standby - XLOG_STANDBY_CSN_COMMITTING, xid 47476, csn 23762

REDO @ 5/62004588; LSN 5/620045D0: prev 5/62004548; xid 47476; term 603; len 32; total 66; crc 3633394922; desc: Transaction - XLOG_XACT_COMMIT_COMPACT commit: 2026-05-06 16:57:55.636535 CST; csn:23762; RecentXmin:47476

  • 查看 WAL 记录的统计概览

了解这个 WAL 文件中各类操作(如 XLOG、Heap、Transaction、Btree 等)的数量和大小占比

pg_xlogdump -p $PGDATA/pg_xlog -z 000000010000000500000062

  • 解析某类操作(如堆表操作)

可以先执行 pg_xlogdump -r list查看支持的资源管理器列表

pg_xlogdump -p $PGDATA/pg_xlog -r heap 000000010000000500000062

  • 按 LSN 范围解析

如果有具体的 LSN 起止位置(例如从数据库报错日志或 pg_current_xlog_location()获得):

pg_xlogdump -p $PGDATA/pg_xlog -s 5/62004488 -e 5/62004548

  • 结合 awk/grep 进行高级分析

统计某个 WAL 文件中涉及表修改(Heap 操作)的情况,或提取特定 rel OID 的操作:

pg_xlogdump -p $PGDATA/pg_xlog 000000010000000500000061 000000010000000500000062 | grep "Heap" | awk '{print $0}'

这对于分析某段时间内的表变更频率、定位大量数据导入/删除操作很有帮助

  1. 输出内容关键字段简析

REDO @ 5/62004418; LSN 5/62004488: prev 5/620041D8; xid 47476; term 603; len 11; total 105; crc 2232514816; desc: Heap - XLOG_HEAP_INSERT insert(init): pd_xid_base 47473 off 1, blkref #0: rel 1663/20116/187899/-1/0, forknum:0 storage HEAP DISK blk 0 lastlsn 0/0

REDO @:本条 WAL 记录的 Redo 起点 LSN(重放时的起始位置)

LSN:当前记录的 LSN

prev:上一条记录的 LSN

xid:事务 ID

desc:操作描述,如 XLOG - checkpoint、Heap - XLOG_HEAP_INSERT、Btree - lev0等

rel:相关的关系(表)文件节点信息,格式通常为 tablespace/dboid/relfilenode,

select pg_relation_filenode('schema.table');比对确认具体表。

len / total:记录长度 / 总长度

最后修改时间:2026-06-01 00:01:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论