pg_wal_replay_pause()
是一个用于在备用服务器上暂停WAL回放(恢复)的系统函数。
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回放实际暂停之前可能会有延迟。WAL回放暂停的点将在PostgreSQL日志文件中记录,例如:
LOG: 00000: recovery has paused
pg_is_wal_replay_paused()
可用于确定WAL回放是否已暂停。
从PostgreSQL 14 开始,pg_get_wal_replay_pause_state()
函数也可用于确定WAL回放暂停请求的状态。
变更历史
- PostgreSQL 10
- 重命名为
pg_wal_replay_pause()
(提交 806091c9)
- 重命名为
- PostgreSQL 9.1
- 添加为
pg_xlog_replay_pause()
(提交 8c6e3adb)
- 添加为
示例
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();
参考文献
- PostgreSQL 文档: 恢复控制函数