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
- 添加于 (commit 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 文档: 备份控制函数
