0

我有如下的开发环境。

安装了tomcat7,mysql的开发服务器。我们的应用程序使用 mysql 数据库在其上运行。我们还有一台称为生产服务器的服务器,它也托管 tomcat7 和 mysql。我们的应用程序也在那里运行。我们正在使用像 ec2 实例这样的亚马逊网络服务。问题是每当我们在开发服务器中集成一些数据库更改时,我们都需要在生产服务器中复制相同的过程。谁能建议我理想的基础设施,我们可以在其中使用完整的克隆或任何简单的过程。欢迎任何实践中的优秀架构。

4

1 回答 1

1

必须像应用程序的任何其他部分一样跟踪对数据库的每次更改(当然,最明显的“其他部分”是您的代码库)。

在 SQL 脚本中记录对数据库所做的每个更改。该脚本将作为标准升级过程的一部分应用于目标环境——应用补丁意味着“安装新代码应用数据库升级脚本,并且可以轻松编写此处理脚本。

如果您预见到将来必须安装应用程序的新实例的可能性,您将需要能够创建新的空数据库。为此,您还需要维护一个创建应用程序默认结构的“初始化脚本”。这包括表、触发器、存储例程创建脚本,可能还有表中的一些默认行。此脚本的维护方式必须与升级脚本相同。您可能希望在将使用标准升级脚本升级的某个集成服务器上保留一个空数据库。然后在每次发布时转储此数据库;此转储成为您的参考数据库创建脚本。

Coding Horror 上的这篇博文指出了几篇关于这个主题的高质量文章。

于 2013-07-30T17:56:24.263 回答