此条目涉及一个已弃用的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月博客文章