此条目与较新PostgreSQL版本中已重命名的功能相关
pg_walfile_name_offset() 是一个系统函数,用于根据提供的 LSN 获取对应的 WAL 文件名,以及该文件中记录的字节偏移量。
pg_walfile_name_offset() 在 PostgreSQL 8.2 中添加 。
用法
pg_walfile_name_offset (lsnpg_lsn ) → record (file_nametext,file_offsetinteger )
pg_walfile_name_offset() 只能在主服务器上执行(即不能在只读standby上执行)。
变更历史
- PostgreSQL 17
- 当LSN位于段边界时,返回当前段号(segno)(提交 344afc77)
- PostgreSQL 10
- 重命名为
pg_walfile_name_offset()(提交 806091c9)
- 重命名为
- PostgreSQL 9.4
- PostgreSQL 8.2
- 作为
pg_xlogfile_name_offset()添加(提交 704ddaaa)
- 作为
示例
pg_walfile_name_offset() 的基本用法示例
postgres=# SELECT * FROM pg_walfile_name_offset('0/01000028');
file_name | file_offset
--------------------------+-------------
000000010000000000000001 | 40
(1 row)
获取当前的WAL文件名和字节偏移量
postgres=# SELECT * FROM pg_walfile_name_offset(pg_current_wal_lsn());
file_name | file_offset
--------------------------+-------------
000000010000000000000003 | 9456
(1 row)
尝试在standby上执行 pg_walfile_name_offset()
postgres=# SELECT * FROM pg_walfile_name_offset('0/01000028');
ERROR: recovery is in progress
HINT: pg_walfile_name_offset() cannot be executed during recovery.
参考资料
- PostgreSQL 文档: 备份控制函数
