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