pg_filedump
是一个用于显示 PostgreSQL 堆、索引或控制文件格式化内容的实用程序。
pg_filedump
可用于从 PostgreSQL 9.0 开始的所有 PostgreSQL 版本。请注意,虽然它由 PostgreSQL 项目提供,但它不是核心实用程序,需要单独编译或安装。
发行历史
示例
创建一个包含一些任意数据的表
CREATE TABLE foo (id INT, val TEXT); INSERT INTO foo VALUES(generate_series(1,5), md5(clock_timestamp()::TEXT)); CHECKPOINT; -- ensure contents are written from shared_buffers to disk
确定表的数据文件的位置(有关此方面的更多信息,请参见 filenode)
SELECT pg_relation_filepath('foo'::regclass);
使用以下命令以人类可读的格式转储内容:-D选项(注意:为此,您需要知道列类型和顺序)
postgres $ pg_filedump -D int,text ./base/16385/32784 ******************************************************************* * PostgreSQL File/Block Formatted Dump Utility - Version 11.0 * * File: ./base/16385/32784 * Options used: -D int,text * * Dump created on: Fri Dec 7 18:47:46 2018 ******************************************************************* Block 0 ******************************************************** <Header> ----- Block Offset: 0x00000000 Offsets: Lower 44 (0x002c) Block: Size 8192 Version 4 Upper 7872 (0x1ec0) LSN: logid 0 recoff 0x018dacb0 Special 8192 (0x2000) Items: 5 Free Space: 7828 Checksum: 0xd874 Prune XID: 0x00000000 Flags: 0x0000 () Length (including item array): 44 <Data> ------ Item 1 -- Length: 61 Offset: 8128 (0x1fc0) Flags: NORMAL COPY: 1 eb4f2363f1f90f13c31d18ec9ecb683e Item 2 -- Length: 61 Offset: 8064 (0x1f80) Flags: NORMAL COPY: 2 1cdce4984a6002b1ae1bafffc1eb31db Item 3 -- Length: 61 Offset: 8000 (0x1f40) Flags: NORMAL COPY: 3 8764bdccfbd32aaf0ae3ffb077f48d56 Item 4 -- Length: 61 Offset: 7936 (0x1f00) Flags: NORMAL COPY: 4 fb37467829dc3f7a4124d6ea1f0fb77b Item 5 -- Length: 61 Offset: 7872 (0x1ec0) Flags: NORMAL COPY: 5 7398f49dc8c7027f73d75a6081b415bc *** End of File Encountered. Last Block Read: 0 ***
参考文献
- git 仓库
- 自述文件
- pg_filedump 在 PostgreSQL Wiki 中
有用链接
- 首次接触 pg_filedump - Neil Chen / HighGo 于 2021 年 7 月发表的博文
- 使用 pg_filedump 显示 PostgreSQL 数据文件的内容 - Daniel Westermann 的博文
- 使用 pg_filedump 进行物理恢复 - Alexey Chernyshov 的博文
参见
pageinspect,pg_hexdump