pg_switch_wal()

强制切换到新 WAL 文件的函数
此条目与较新PostgreSQL版本中已重命名的功能相关

pg_switch_wal() 是一个系统函数,它强制 PostgreSQL 切换到一个新的 WAL 文件。

pg_switch_wal()PostgreSQL 8.2 中作为 pg_switch_xlog() 添加。

用法

pg_switch_wal() → pg_lsn

pg_switch_wal() 返回旧 WAL 文件的结束 LSN + 1。

然而,如果自上次 WAL 文件切换以来没有生成 WAL 的活动,则不会执行切换,而是返回当前 WAL 文件的起始位置。

pg_switch_wal() 只能在主服务器上执行(即不能在只读备用服务器上执行)。

变更历史

示例

pg_switch_wal() 的基本用法示例

postgres=# SELECT pg_switch_wal();
 pg_switch_wal 
---------------
 0/161F710
(1 row)

如果自上次 WAL 文件切换以来没有生成 WAL 的活动,则不会创建新的 WAL 文件

postgres=# SELECT pg_walfile_name(pg_switch_wal()), pg_walfile_name(pg_switch_wal());
     pg_walfile_name      |     pg_walfile_name      
--------------------------+--------------------------
 000000010000000200000086 | 000000010000000200000086
(1 row)

然而,在以下示例中,函数 foo() 会导致 WAL 文件活动,因此将始终引起 WAL 文件切换

postgres=# SELECT pg_walfile_name(pg_switch_wal()), foo(), pg_walfile_name(pg_switch_wal());
     pg_walfile_name      | foo |     pg_walfile_name      
--------------------------+-----+--------------------------
 000000010000000200000097 |     | 000000010000000200000098
(1 row)

尝试在备用服务器上执行 pg_switch_wal()

postgres=# SELECT pg_switch_wal();
ERROR:  recovery is in progress
HINT:  WAL control functions cannot be executed during recovery.

分类

重命名项, 系统函数, WAL

另请参阅

pg_walfile_name(), pg_walfile_name_offset()

反馈

在此处提交有关“pg_switch_wal()”的任何评论、建议或更正 here