开发者社区> 问答> 正文

您如何在开发,测试和生产中管理数据库?

我一直很难尝试找到有关如何在开发,测试和生产服务器之间管理数据库架构和数据的良好示例。

这是我们的设置。每个开发人员都有一个运行我们的应用程序和MySQL数据库的虚拟机。做他们想做的事是他们的个人沙箱。当前,开发人员将更改SQL模式,并将数据库转储到他们提交到SVN中的文本文件中。

我们想要部署一个持续集成开发服务器,该服务器将始终运行最新的提交代码。如果我们现在这样做,它将为每个构建版本从SVN重新加载数据库。

我们有一台运行“虚拟候选版本”的测试(虚拟)服务器。当前,部署到测试服务器是一个非常手动的过程,通常需要我从SVN加载最新的SQL并进行调整。此外,测试服务器上的数据不一致。最后,您将获得最后一个要提交的开发人员在其沙箱服务器上拥有的测试数据。

一切失败的地方就是部署到生产。由于我们无法用测试数据覆盖实时数据,因此需要手动重新创建所有架构更改。如果有大量的模式更改或转换脚本来操作数据,那么这可能会变得很麻烦。

如果问题仅仅是模式,那将是一个更简单的问题,但是数据库中也存在“基础”数据,这些数据也在开发过程中进行了更新,例如安全性和权限表中的元数据。

这是我看到的朝着持续集成和一步构建的最大障碍。您如何解决?

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-15 15:02:08 666 0
1 条回答
写回答
取消 提交回答
  • 有几个不错的选择。我不会使用“还原备份”策略。

    编写所有模式更改的脚本,并让CI服务器在数据库上运行这些脚本。有一个版本表来跟踪当前的数据库版本,并且仅当脚本用于较新的版本时才执行。

    使用迁移解决方案。这些解决方案因语言而异,但是对于.NET,我使用Migrator.NET。这使您可以对数据库进行版本控制,并在不同版本之间上下移动。您的架构以C#代码指定。

    2019-11-15 15:02:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
移动互联网测试到质量的转变 立即下载
给ITer的技术实战进阶课-阿里CIO学院独家教材(四) 立即下载
F2etest — 多浏览器兼容性测试整体解决方案 立即下载