如何在本地 Flask 环境中自动使用生产 postgres 数据库备份
Posted
技术标签:
【中文标题】如何在本地 Flask 环境中自动使用生产 postgres 数据库备份【英文标题】:How to automate using a production postgres database backup in local Flask environment 【发布时间】:2021-05-07 09:13:31 【问题描述】:我们的网站使用 Postgres 和 Flask,并且我们经常在本地使用生产数据库转储。为了获得新的转储,我使用远程桌面连接 (RDC) 连接到 pgAdmin,然后再次使用 RDC 从服务器复制 .bak
文件并将其保存在本地。同样,我使用 pdAdmin 的本地实例从备份中恢复数据库状态。
我的经理要求我在每次启动本地 Flask 实例时自动执行此过程以使用生产数据库。我该怎么做?
【问题讨论】:
【参考方案1】:您可以编写一个 shell 脚本,使用 pg_dump
将数据库转储到本地文件,然后使用 pg_restore
从该转储构建一个新的本地数据库。您甚至可以将输出从 pg_dump
传递到 pg_restore
... 类似
pg_dump --host <remote-database-host> --dbname <remote-database-name> --username <remote-username> > pg_restore --host <local-database-host> --username <local-username>
要将您的密码输入pg_dump
/ pg_restore
,您可能需要使用 .pgpass 文件,如下所述:How to pass in password to pg_dump?
如果您希望在本地启动 Flask 实例时自动发生这种情况,如果设置了 LOCAL_INSTANCE 环境变量或类似的内容,您可以使用 subprocess
调用从初始化代码中调用 shell 脚本
【讨论】:
谢谢,但我对此还有其他问题。我试图从 sh 导入 pg_dump,但我知道 sh 不支持 window.dump。那么你有没有关于子流程的文件以上是关于如何在本地 Flask 环境中自动使用生产 postgres 数据库备份的主要内容,如果未能解决你的问题,请参考以下文章