您好,PostgreSQL 专家!
我正在运行一个带有多个数据库实例(“集群”)的 postgresql 15 服务器,它使用 Netapp NFS 作为数据和 WAL 目录的存储。我正在尝试实现存储快照级备份,我使用以下方式激活备份模式:
psql -e "SELECT pg_backup_start('backup-1', fast => true);"
在所有实例上,然后向数据和 WAL 卷的存储发出快照命令,然后再次在所有数据库上禁用备份模式。
但是,该功能似乎pg_backup_start()
必须以交互方式触发,并且 psql shell 关闭时,备份模式再次被取消。这当然使这种备份方法的想法无效,因为快照将包含不一致的数据。
问题:如何以非交互方式在 postgresql 15 数据库上激活“备份模式”,或者通过 shell 脚本以某种方式激活“备份模式”,以便我可以在脚本中执行其他操作,而数据库不会在其间退出备份模式?
细节:
- postgresql-15 (15.5-1.pgdg120+1)
- Debian 12 x86_64
- 来自 Postgres 官方 DEB 仓库的软件包(http://apt.postgresql.org)
- NFS/Netapp Ontap 9.x
提前感谢您的意见和帮助!
答案1
b2c,我会尝试使用 pg_ctl 命令而不是 psql:
pg_ctl -D $PGDATA start fast
# snapshot commands here
pg_ctl -D $PGDATA stop