pg_create_restore_point()
是用于创建还原点的系统函数,即 WAL 流中恢复将停止的命名点。
pg_create_restore_point()
在 PostgreSQL 9.1 中添加。
用法
pg_create_restore_point ( name TEXT ) → pg_lsn
变更历史
- PostgreSQL 9.4
- PostgreSQL 9.1
- 添加(提交 c016ce72)
示例
创建还原点
postgres=# SELECT pg_create_restore_point('test_restore_point'); pg_create_restore_point ------------------------- 2/BDFE0260 (1 row)
这将在 PostgreSQL 日志文件中生成类似以下的条目
[2021-04-06 13:46:06 UTC] psql postgres postgres LOG: 00000: statement: SELECT pg_create_restore_point('test_restore_point'); [2021-04-06 13:46:06 UTC] psql postgres postgres LOG: 00000: restore point "test_restore_point" created at 2/BDFE0260
相应的 WAL 记录是
rmgr: XLOG len (rec/tot): 98/ 98, tx: 0, lsn: 2/BDFE01F8, prev 2/BDFE01C0, desc: RESTORE_POINT test_restore_point
在备用服务器上,将 recovery_target_name
设置为 test_restore_point
将导致恢复在到达命名还原点时停止
[2021-04-07 14:08:53 UTC] LOG: 00000: recovery stopping at restore point "test_restore_point", time 2021-04-06 13:46:06.943405+0 [2021-04-07 14:08:53 UTC] LOG: 00000: pausing at the end of recovery [2021-04-07 14:08:53 UTC] HINT: Execute pg_wal_replay_resume() to promote.
这对应于创建还原点时返回的 LSN,2/BDFE0260
postgres=# SELECT * FROM pg_control_recovery()\gx -[ RECORD 1 ]-----------------+----------- min_recovery_end_lsn | 2/BDFE0260 min_recovery_end_timeline | 1 backup_start_lsn | 0/0 backup_end_lsn | 0/0 end_of_backup_record_required | f
参考
- PostgreSQL 文档: 备份控制函数