我只是想知道这是否是最安全的方法,就数据库而言,将我的生产设置复制到开发环境?
ssh user@app.com pg_dump app-production | psql app-development
我只是想确保此命令不会或不会对正在转储的数据库产生任何意外的副作用。
答案 0 :(得分:2)
它将对生产施加相当大的负担,以从磁盘读取所有数据并通过网络发送。它还会锁定每个对象,有时可能会干扰生产系统的运行。
我认为影响最小的方法是连接到生产系统已有的任何备份系统。如果您使用pg_dump进行备份,请从最新的备份中恢复,而不会触及生产。如果您使用wal归档进行备份,请从中进行“恢复”以获得克隆,而不再触及生产。
答案 1 :(得分:1)
它不会对生产数据库进行任何更改,但它可能会对生产数据库性能产生显着影响。
它会增加一般负载,因为它显然会访问所有表和大对象。
但是,我更关心的是你使用网络的方式。通过直接通过连接进行管道连接,您在整个pg_dump过程中依赖于开放的网络连接,并且在应用程序开发完成加载之前保持访问权限。
此外,如果网络丢失或任何事情,您必须完全重启。
如果可以的话,我建议您转储到文件中。像
这样的东西pg_dump -Fc --file=app-production.backup app-production
然后将带有sftp的app-production.backup传输到您的开发箱。
这样你就可以利用压缩数据的自定义格式“-Fc”,这样你的ssh命中率会更小。此外,一旦您将文件sftp到本地开发框,您就可以根据需要再次加载,重新加载,重新加载,而无需重新访问生产数据库。