我有如下的开发环境。
开发服务器用tomcat7,安装mysql。我们的应用程序使用mysql数据库运行。我们还有一个名为Production server的服务器,它还托管tomcat7和mysql。我们的应用程序也在那里运行。我们正在使用像ec2实例这样的亚马逊网络服务。问题是每当我们在开发服务器中集成一些数据库更改时,我们需要在生产服务器中复制相同的进程。任何人都可以建议我理想的基础设施,我们可以使用完整的克隆或任何简单的过程。我们欢迎任何优秀的建筑在实践中。
答案 0 :(得分:1)
必须跟踪对数据库的每次更改,就像应用程序的任何其他部分一样(当然,最明显的“其他部分”是您的代码库)。
记录SQL脚本中对数据库所做的每个更改。此脚本将作为标准升级过程的一部分应用于目标环境 - 应用修补程序然后意味着“安装新代码和应用数据库升级脚本,并且可以轻松编写此脚本。
如果您预见到将来必须安装应用程序的新实例,则需要能够创建新的空数据库。为此,您还需要维护一个“初始化脚本”,以创建应用程序的默认结构。这包括表,触发器,存储例程创建脚本,以及表中可能的一些默认行。必须以与升级脚本相同的方式维护此脚本。您可能希望在使用标准升级脚本升级的某个集成服务器上保留一个空数据库。然后在每个版本中转储此数据库;此转储将成为您的参考数据库创建脚本。
This blog post at Coding Horror指出了有关此主题的几篇高质量文章。