此条目与较新PostgreSQL版本中已重命名的功能相关
pg_walfile_name() 是一个系统函数,用于获取与提供的 LSN 相对应的 WAL 文件名。
pg_walfile_name() 函数在 PostgreSQL 8.2 中作为 pg_xlogfile_name() 添加。
用法
pg_walfile_name ( lsn pg_lsn ) → text
pg_walfile_name() 只能在主服务器上执行(即不能在只读备用服务器上执行)。
变更历史
- PostgreSQL 17
- 当 LSN 位于段边界时,返回当前段号 (segno) (commit 344afc77)
- PostgreSQL 10
- 重命名为
pg_walfile_name()(commit 806091c9)
- 重命名为
- PostgreSQL 9.4
- PostgreSQL 8.2
- 添加为
pg_xlogfile_name()(commit 704ddaaa)
- 添加为
示例
pg_walfile_name() 的基本用法示例
postgres=# SELECT pg_walfile_name('0/01000001');
pg_walfile_name
--------------------------
000000010000000000000001
(1 row)
获取当前的 WAL 文件名
postgres=# SELECT pg_walfile_name(pg_current_wal_lsn());
pg_walfile_name
--------------------------
000000010000000000000003
(1 row)
尝试在备用服务器上执行 pg_walfile_name()
postgres=# SELECT pg_walfile_name('0/1');
ERROR: recovery is in progress
HINT: pg_walfile_name() cannot be executed during recovery.
参考资料
- PostgreSQL 文档: 备份控制函数
