我正在用Postgres数据库开发一个运行django的网站。 我在本地开发,并有3台VPS服务器用于testing,分期和生产。 每个VPS运行自己的Linux / Apache / Python / Postgres堆栈,并拥有自己的数据库。
我已经开始发现,通过使用git进行连续部署,暂存实际上变得多余(从分段到生产需要交换需要重新启动VPS的IP地址)。
我唯一能做的就是有助于进行复杂的数据库迁移,即使这样,在分区和生产过程中的Postgres数据库也不会镜像,那么在迁移之间input的数据就会丢失。
我的问题是我应该在分期和生产之间镜像Postgres吗? (如果是这样,怎么样?)我做对了吗? 我无法find有关Web应用程序部署最佳实践的任何地方的文档。
我想说,如果你认为你必须不止一次地做一个复杂的数据库迁移,你应该将Postgres镜像到分期和生产之间。 手动进行迁移可能非常容易出错,因此几乎可以肯定地收回设置迁移的时间投资。
我不是Postgres专家,但是这里是对复制选项的概述。
您可以通过在更新期间使实时站点只读来避免迁移期间的数据丢失。
大概你有你的postgresql数据库的一些备份系统? 如果是这样,您可以使用这些备份将数据填充到登台/ dev环境中。 我有一些使用复制的客户端(主要在MySQL空间)。
对于备份/分段:生产 – 复制 – >分段–mysqldump – >备份
开发:备份–mysqlimport – >开发
当他们需要testing部署时,他们只是简单地打破复制。 这个系统很less使用(每年2-4次)。 这样做的缺点是,在某些时候,您必须重置可能需要在生产系统上停机的复制。
有可能是更清洁的实施,但他们发现这很好。 好的是,他们只是将代码升级到临时系统,打破复制,他们基本上有一个回归和应用程序testing的当前活箱。