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 的工作原理和事务日志提供了窗口,但它更多地是面向有经验的数据库管理员和开发者。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/601636.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++历练之路】红黑树——map与set的封装实现

W...Y的个人主页&#x1f495; gitee代码仓库分享&#x1f60a; 前言&#xff1a;上篇博客中&#xff0c;我们为了使二叉搜索树不会出现”一边倒“的情况&#xff0c;使用了AVL树对搜索树进行了处理&#xff0c;从而解决了数据在有序或者接近有序时出现的情况。但是AVL树还会…

【编码利器 —— BaiduComate】

目录 1. 智能编码助手介绍 2. 场景需求 3. 功能体验 3.1指令功能 3.2插件用法 3.3知识用法 3.4自定义配置 4. 试用感受 5. AI编程应用 6.总结 智能编码助手是当下人工智能技术在编程领域的一项重要应用。Baidu Comate智能编码助手作为一款具有强大功能和智能特性的工…

EPAI手绘建模APP数值几何变换

(10) 数值几何变换 图 257 数值几何变换工具栏 ① 数值几何变换和交互式几何变换都包括移动、旋转、缩放模型。但是交互式几何变换变换时的变换轴是模型自身中心为变换中心&#xff0c;以X、Y、Z方向的为变换方向&#xff0c;而数值几何变换可以指定变换中心和变换方向。另外&a…

HarmonyOS NEXT应用开发之多模态页面转场动效实现案例

介绍 本示例介绍多模态页面转场动效实现&#xff1a;通过半模态转场实现半模态登录界面&#xff0c; 与全屏模态和组件转场结合实现多模态组合登录场景&#xff0c;其中手机验证码登录与账号密码登录都为组件&#xff0c; 通过TransitionEffect.move()实现组件间转场达到近似页…

使用Portal V17搜索PN(profinet)设备的方法

这里的PN就是profinet&#xff0c;无需连接PLC&#xff0c;只需要将PN设备连接电脑即可&#xff0c;如下图&#xff0c; 跳出如下窗口&#xff0c; 点击start search 搜索完毕后就看到PN设备的名字啦&#xff1a; 是不是很简单呢。

LeetCode--所有质数、质数对

1.0 Q: 输出 100 以内所有质数 1.1 /* 第一层循环控制检查到哪个数* 第二层通过遍历除以每个比他小的数的方式,检查每个数是不是质数* 由于要遍历检查,设置一个标记,只要任意一次循环可以整除,我们就设置该标记为不是质数 */boolean isPrime true;for (int i 2; i < 100…

终于找到微信聊天记录SQLite数据库文件解密方法了,一起来看看吧!

https://github.com/xuchengsheng/ 获取当前登录微信的微信昵称、账号、手机号、邮箱、秘钥、微信Id、文件夹路径 将微信PC的多个聊天记录数据库合并为单一数据库文件 支持微信聊天对话窗口&#xff08;文本消息&#xff0c;引用消息&#xff0c;图片消息&#xff0c;表情消息…

STM32(六):定时器PWM呼吸灯 (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中的TIMER定时器来控制LED灯的交替闪烁&#xff0c;实现了点灯的第五种方式。这篇文章我们来介绍一下如何用STM32单片机中的定时器的PWM波来实现LED的“呼吸”。 一、实验原理 关于定时器这边就不多加赘述&#xff0c;详细请看上…

【吊打面试官系列】Java高并发篇 - 如何让正在运行的线程暂停一段时间?

大家好&#xff0c;我是锋哥。今天分享关于 【如何让正在运行的线程暂停一段时间&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 如何让正在运行的线程暂停一段时间&#xff1f; 我们可以使用 Thread 类的 Sleep()方法让线程暂停一段时间。需要注意的是&#x…

ROS1集成NanoSDK(mqtt over quic)库遇到的问题

集成方式&#xff0c;demo见附件 问题记录 ROS集成构建问题&#xff1a;如下图&#xff0c;少了依赖库导致未定义的符号

AMD优化策略

FPGA&#xff0c;英文全称是 Field Programmable Gate Array&#xff0c;中文意思是现场可编程门阵列。基本架构&#xff1a;可配置逻辑模块&#xff08;CLB&#xff1a; Configurable Logic Block&#xff09;、开关矩阵&#xff08;Switch Matrix&#xff0c;也称为 Switch B…

kraken2 最新版安装,极简模式

kraken2 git clone https://github.com/DerrickWood/kraken2.gitcd kraken2./install_kraken2.sh /opt/krakenvim .bashrc ---------------- # Kraken export PATH"/opt/kraken:$PATH" ----------------source .bashrc Note: 不晓得是不是我设置了清华源&#xff0c…

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

Web3智能物联网:科技连接的未来世界

在当今科技飞速发展的时代&#xff0c;Web3智能物联网正逐渐成为人们关注的焦点。随着区块链技术的不断成熟和普及&#xff0c;以及物联网的普及和应用&#xff0c;Web3智能物联网作为二者的结合&#xff0c;将为未来的数字世界带来革命性的变化。本文将深入探讨Web3智能物联网…

【JavaEE 初阶(三)】多线程代码案例

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.单例模式2.1饿汉方式2.2饿汉方式 3.阻塞队列3.1概念3.2实现 4.定时器4.1概念4.…

Linux常用名命令

Linux是一款免费的操作系统&#xff0c;用户可以通过网络或其他途径免费获得&#xff0c;并可以任意修改源代码&#xff0c;这是其他操作系统做不到的&#xff0c;Ubuntu&#xff0c;Centos。 linux中&#xff0c;一切皆文件。 一些重要的目录 / 根目录&#xff0c;所有文件都放…

2024-05-08 精神分析-对损失和挫败的强烈易感性-分析

摘要: 对损失的强烈的易感性&#xff0c;会在遭受损失或者挫败的时候&#xff0c;表现的极其敏感&#xff0c;这个过程主要是在创业的过程中更加强烈的表现并带来巨大的影响。必须要对其进行彻底的分析&#xff0c;并保持对此行为的长期的警惕。 所谓前事不忘后事之师&#x…

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型&#xff0c;即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后&#xff0c;内核会去查看数据是否就绪&#xff0c;如果没有就绪就会等待数据就绪&#xff0c;而用户线程就会处于阻塞状态&#xff0c;用户线…

WIFI模块UDP电脑端调试

一&#xff0c;两端都是电脑端 1&#xff0c;电脑本机的IP地址 192.168.137.1 2&#xff0c;新建两个不同的连接&#xff0c;注意端口 二&#xff0c;WIFI 模块和电脑端连接 1&#xff0c;设置模块端目标IP和端口&#xff0c;电脑端只接收数据的话&#xff0c;IP、端口可随…

effective python学习笔记_pythonic思维

优缺点 书的好处是很多新特性提高了可读性代码性等各方面性能&#xff0c;缺点是新特性和py老版本不兼容&#xff0c;老版本可能没有这些新特性&#xff0c;如果用了py早期版本&#xff0c;需要考虑替代方案 查py版本 import sys sys.version sys.version_info 遵循PEP8 …