此条目与PostgreSQL中已弃用的功能相关,在将来的版本中可能会停止支持。
pg_start_backup()
是一个系统函数,它将PostgreSQL置于适合在文件系统级别执行备份的状态。
pg_start_backup()
在 PostgreSQL 8.0 中添加,并在 PostgreSQL 15 中由 pg_backup_start()
替换。
用法
pg_start_backup (label
text
[,fast
boolean
[,exclusive
boolean
]] ) →pg_lsn
pg_start_backup()
返回必须可用于PostgreSQL才能从该点开始的备份的最小WAL位置的 LSN。
注意:用户或客户端应用程序负责确保备份所需的 WAL 文件可用;通常建议使用诸如 pg_basebackup 之类的应用程序来管理备份过程。
源代码
处理 pg_start_backup()
的后端代码位于 src/backend/access/transam/xlog.c 中,函数 do_pg_start_backup()
。
更改历史记录
- PostgreSQL 15
- 被
pg_backup_start()
替换 (提交 58c41712)
- 被
- PostgreSQL 9.6
- 添加了对非独占备份的支持 (提交 71176854)
- PostgreSQL 9.4
- PostgreSQL 8.4
- PostgreSQL 8.0
- 添加 (提交 58c41712)
示例
使用独占备份
postgres=# SELECT pg_start_backup('test backup'); pg_start_backup ----------------- 0/2000028 (1 row) postgres=# SELECT pg_is_in_backup(); pg_is_in_backup ----------------- t (1 row) postgres=# SELECT pg_backup_start_time(); pg_backup_start_time ------------------------ 2018-12-14 19:22:50+09 (1 row)
此时,数据目录将包含一个 backup_label 文件,并且可以安全地对文件系统级别的数据目录进行备份。
使用非独占备份
postgres=# SELECT pg_start_backup(label := 'test backup', exclusive := false); pg_start_backup ----------------- 0/8000028 (1 row)
在非独占备份中,不会创建 backup_label 文件(而是将备份标签的内容作为记录由 pg_stop_backup()
返回)。现在可以安全地对文件系统级别的数据目录进行备份。
参考文献
- PostgreSQL 14 文档: 备份控制函数
有用链接
- pg_start_backup()的作用是什么? - 2ndQuadrant 2017年1月的博客文章