PostgreSQL 备份:如何以非交互方式激活备份模式

PostgreSQL 备份:如何以非交互方式激活备份模式

您好,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

相关内容