代码之家  ›  专栏  ›  技术社区  ›  Andrei Serdeliuc ॐ

代码和数据跟踪/部署

  •  10
  • Andrei Serdeliuc ॐ  · 技术社区  · 14 年前

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

    我们的部署方式:

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

    问题是:

    其他人是如何管理数据库的?我一直在寻找一些东西,使它可以很容易地将数据从生产带到dev中,也可以将数据从dev迁移到生产中,但没有发现任何东西。

    5 回复  |  直到 12 年前
        1
  •  4
  •   DASPRiD    14 年前

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

    增量文件总是由deploy部分组成,但也可以包含undo部分。当您提交delta文件并且其他开发人员签出它时,他就可以运行dbdeploy,所有新的更改都会自动应用到他的数据库中。

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

        2
  •  2
  •   Oleg    14 年前

    我如何理解您的主要问题是其他人在将SQL数据从dev迁移到生产环境中时是否过期。

    我使用的是Microsoft SQL Server而不是SQL,所以我不确定您是否可以直接使用我的过期时间。尽管如此,这种方法还是很有效的。

    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

        3
  •  0
  •   Ken Struys    14 年前

    capistrano . 它是ruby社区用于部署到不同环境的工具,我发现它非常有用。

    Murder .

        4
  •  0
  •   John Nicholas    14 年前

    就我个人而言,我会看看蟾蜍

    http://www.toadworld.com/

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

        5
  •  0
  •   Jonathan Day    14 年前

    解决方案的一部分是在单个位置捕获每个代码模块的版本及其相应的数据资源,并对它们进行比较以确保一致性。例如,增加你的版本号, customer_comments

    例如,看看Magento的 core_resource approach 如@alanstrom所述。

    干杯,

    推荐文章