繁体   English   中英

代码和数据跟踪/部署

[英]Code & data tracking / deployment

长期以来,我们一直将数据保存在项目存储库中。 我们只是将所有内容都保存在data / sql下,并且每个表都有其自己的create_tablename.sql和data_tablename.sql文件。

现在,我们刚刚将第二个项目部署到了​​Scalr上,并且我们意识到它有点混乱。

我们的部署方式:

我们有一个“打包”脚本集合,这些脚本将项目分解为3个归档文件(数据,代码,静态文件),然后将它们存储在S3上的3个单独的存储桶中。

每当角色启动时,它都会下载一个文件(取决于角色:数据,nfs或Web),然后“解包”脚本为每个角色设置所有内容,将数据加载到mysql中,设置nfs等。 。

之所以这样做是因为我们不想保存服务器映像,我们总是从原始实例开始,使用各种内部构建的脚本从头开始安装所有内容。 启动时间不是问题(我们可以在9分钟内准备使用场)。

问题是,每当我们尝试建立新的开发版本时(尝试在任何时间点上为一个项目获得大约4个开发版本),都很难找到正确的数据库版本。 另外,一旦我们投入生产,git就开始令人窒息,因为sql文件最终总计约500mb。

问题是:

其他人如何管理数据库? 我一直在寻找可以轻松地将数据从生产环境转移到开发环境,以及将数据从开发环境迁移到生产环境的东西,但是并没有发现任何问题。

您应该认真看一下dbdeploy(dbdeploy.com)。 它被移植到许多语言中,主要是Java和PHP。 它集成在Ant和Phing等构建工具中,并允许轻松共享所谓的增量文件。

增量文件始终包含一个deploy部分,但也可以包含一个undo部分。 当您提交增量文件而另一位开发人员将其签出时,他只需运行dbdeploy,所有新更改都将自动应用于他的数据库。

我将dbdeploy用于我的开源博客,因此您可以看一下增量文件的组织方式: http ://site.svn.dasprids.de/trunk/sql/deltas/

我如何理解您的主要问题是其他人在将SQL数据从开发人员迁移到生产环境中的经验。

我使用Microsoft SQL Server而不是My SQL,所以我不确定您可以直接使用我的经验。 不过,这种方式非常有效。

我使用Visual Studio 2010 Ultimate版来比较两个数据库中的数据。 Vinsual Studio Team Edition 2008(或数据库版本)中也存在相同的功能。 您可以阅读http://msdn.microsoft.com/en-us/library/dd193261.aspx以了解其工作原理。 您可以比较两个数据库(dev和prod),并生成用于修改数据的SQL脚本。 您可以轻松地从比较中排除某些表或某些列。 您还可以检查结果,并从脚本生成中排除某些条目。 因此,可以轻松灵活地生成脚本,这些脚本可用于部署数据库中的更改。 您可以从结构中分别比较两个数据库的数据(模式比较)。 因此,您可以使用prod中的数据刷新dev中的数据,或生成将prod数据库修改为dev数据库的最新版本的脚本。 我建议您查看此功能以及http://www.red-gate.com/的某些产品(例如http://www.red-gate.com/products/SQL_Compare/index.htm )。

退房capistrano 这是ruby社区用于部署到不同环境的工具,我发现它确实很有用。

另外,如果您的部署开始受阻,请尝试构建一个名为Murder的工具twitter。

我个人会看蟾蜍

http://www.toadworld.com/

少于10k;)...将分析数据库结构,生成修改它们的脚本,还将迁移数据。

解决方案的一部分是在单个位置捕获每个代码模块的版本及其对应的数据资源,并进行比较以确保一致性。 例如, customer_comments模块的版本号增加将需要一个相应的SQL delta文件,以将相关的DB表升级到该数据的相同版本号。

例如,看看core_resource记录的Magento的core_resource 方法

欢呼,京东

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM