pg_walfile_name_offset()
是一个系统函数,用于获取与提供的 WAL 文件对应的文件名,以及该文件中记录的字节偏移量。LSN
pg_walfile_name_offset()
在 PostgreSQL 8.2 中添加。.
用法
pg_walfile_name_offset (lsn
pg_lsn ) → record (file_name
text,file_offset
integer )
pg_walfile_name_offset()
只能在主服务器上执行(即,不是只读备机)。
更改历史记录
- PostgreSQL 17
- 如果 LSN 位于段边界(提交 344afc77),则返回当前段号 (segno)
- 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)
尝试在备机上执行 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 文档: 备份控制函数