pg_wal_replay_pause()

暂停 WAL 重放的函数
此条目与较新PostgreSQL版本中已重命名的功能相关

pg_wal_replay_pause() 是一个用于在备机上暂停 WAL (Write-Ahead Logging,预写日志) 重放(恢复)的系统函数。

pg_wal_replay_pause()PostgreSQL 9.1 中被添加,当时名为 pg_xlog_replay_pause()

用法

pg_wal_replay_pause() → void

pg_wal_replay_pause() 向 PostgreSQL 发出请求以暂停 WAL 重放;成功后,将不再应用任何后续更改。执行 pg_wal_replay_resume() 以恢复 WAL 重放。

请注意,尽管 pg_wal_replay_pause() 会立即返回,但 WAL 重放实际暂停可能存在延迟。重放暂停的时间点会在 PostgreSQL 日志文件中记录,类似如下条目:

LOG:  00000: recovery has paused

可以使用 pg_is_wal_replay_paused() 来确定 WAL 重放是否已暂停。

PostgreSQL 14 开始,还可以使用 pg_get_wal_replay_pause_state() 函数来确定 WAL 重放暂停请求的状态。

变更历史

示例

pg_wal_replay_pause() 的基本用法

postgres=# SELECT pg_wal_replay_pause();
 pg_wal_replay_pause
---------------------

(1 row)

postgres=# SELECT pg_get_wal_replay_pause_state();
 pg_get_wal_replay_pause_state
-------------------------------
 paused
(1 row)

postgres=# SELECT pg_wal_replay_resume();
 pg_wal_replay_resume
----------------------

(1 row)

这会在 PostgreSQL 日志文件中生成类似如下的条目:

[2021-04-06 15:14:24 UTC] psql postgres postgres LOG:  00000: statement: SELECT pg_wal_replay_pause();
[2021-04-06 15:14:24 UTC]    LOG:  00000: recovery has paused
[2021-04-06 15:14:24 UTC]    HINT:  Execute pg_wal_replay_resume() to continue.
[2021-04-06 15:14:34 UTC] psql postgres postgres LOG:  00000: statement: SELECT pg_get_wal_replay_pause_state();
[2021-04-06 15:14:58 UTC] psql postgres postgres LOG:  00000: statement: SELECT pg_wal_replay_resume();

分类

重命名项, 复制, 系统函数, WAL

另请参阅

pg_wal_replay_resume(), pg_is_wal_replay_paused(), pg_get_wal_replay_pause_state()

反馈

提交关于“pg_wal_replay_pause()”的任何评论、建议或更正请点击 此处