我正在开发一个mill支持的带有Postgres数据库的网站。我在本地开发,有3台VPS服务器,用于测试、分期和生产。每个VPS使用自己的数据库运行自己的Linux / Apache / Python / Postgres堆栈。
我开始发现,通过使用git进行持续部署,阶段实际上已经变得多余(从暂存到生产需要交换IP地址,这需要重新启动VPS)。
当需要进行复杂的数据库迁移时,我唯一可以避免分阶段有用的情况是,即使这样,即使Postgres的分阶段和生产arn数据库没有镜像,迁移之间输入的数据丢失也可能会出现问题。
我的问题(S)是我是否应该在舞台和生产之间做些反映?(如果是,怎么做?)我做得对吗?我在任何地方都找不到很多关于web应用程序部署最佳实践的文档。
发布于 2010-02-25 17:59:04
我想说,如果您认为必须多次执行复杂的DB迁移,那么您应该在准备和生产之间进行Postgres的镜像。手动执行迁移非常容易出错,因此您几乎肯定会收回设置迁移的时间。
我不是Postgres专家,但这里是复制选项概述。
发布于 2010-02-25 19:18:36
您可以避免迁移期间的数据丢失,方法是在升级期间使活动站点只读。
发布于 2010-02-26 04:22:36
您可能有postgresql数据库的备份系统吗?如果是这样的话,您可以使用这些备份在暂存/ dev环境中填充数据。我有一些客户机使用复制(主要是在MySQL空间中)。
用于备份/暂存:生产--复制-->暂存--mysqldump -->备份
开发:备份-mysqlimport->开发
当他们需要在部署上进行测试时,他们只会中断复制。这个系统很少使用(每年2-4次)。这样做的缺点是,在某些时候,您必须重置复制,这可能需要在生产系统上的一些停机时间。
可能有更干净的实现,但他们发现这很好。好的是,它们只是简单地将代码提升到暂存系统、中断复制,并且它们基本上有一个当前的、可用于回归和应用程序测试的活动盒。
https://serverfault.com/questions/116849
复制相似问题