0

我有像下面这样的开发环境。需要分布式体系结构或流程

已安装tomcat7,mysql的开发服务器。我们的应用程序使用mysql数据库在此上运行。我们有一台叫做生产服务器的服务器,它也托管tomcat7和mysql。我们的应用程序也在那里运行。我们正在使用亚马逊网络服务,如ec2实例。问题是每当我们在开发服务器中集成某些数据库更改时,我们需要在生产服务器中复制相同的进程。任何人都可以向我建议理想的基础设施,我们可以使用完整的克隆或任何简单的流程。任何好的建筑在实践中都受到欢迎。

回答

1

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

记录SQL脚本中对数据库所做的每一项更改。该脚本将在目标环境中应用作为标准升级过程的一部分 - 然后应用补丁的意思是“安装新的代码应用数据库升级脚本,这样处理可以很容易地编写脚本

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

This blog post at Coding Horror指向这个主题的几个高质量的文章。

+0

谢谢你的回答。我不想使用任何脚本,是否有可能克隆VM软件,以便该过程很简单? – geekgugi

+0

请说明“克隆VM”。您无法“克隆”数据库,因为目标数据库包含生产数据。不是应用一个简短的数据库补丁比克隆任何东西更容易吗? – RandomSeed