连续交付生产中的关系数据库(和模式)迁移模式是什么?连续交付生产数据迁移模式
在许多传统开发中,DBA在当前发布周期中创建的许多较小脚本中安排了一个大型迁移脚本。但是在CD中,开发人员可能想要将更改推向生产,而不是等待用其他脚本编译它们。
我知道在rails-migration上,但对我来说,使用原始sql脚本看起来更合理。
我也见过像flyway这样的工具来管理迁移,但我还没有看到很多人在生产中使用它们。这就是为什么我想知道这里常见的做法。
连续交付生产中的关系数据库(和模式)迁移模式是什么?连续交付生产数据迁移模式
在许多传统开发中,DBA在当前发布周期中创建的许多较小脚本中安排了一个大型迁移脚本。但是在CD中,开发人员可能想要将更改推向生产,而不是等待用其他脚本编译它们。
我知道在rails-migration上,但对我来说,使用原始sql脚本看起来更合理。
我也见过像flyway这样的工具来管理迁移,但我还没有看到很多人在生产中使用它们。这就是为什么我想知道这里常见的做法。
Flyway适用于连续交付/部署。许多客户在所有环境中使用它,包括生产。
跨环境级联DB迁移的一个最重要的事情是有一个3个步骤:
步骤1
旧的应用程序代码与旧的数据库一起工作。
步骤2
新的应用程序代码中得到部署,并迁移DB上启动。此迁移必须向后兼容,以便旧应用程序代码仍可与新数据库一起使用。这是必要的,因为:
此步骤可能涉及兼容性视图和触发器以执行此项工作。
步骤3
更改已证明的工作之后,应用程序代码的下一个版本得到 必要DB迁移部署在一起以丢弃任何剩余的过时的(来自步骤1)和兼容性(从步骤2)结构。
我意识到这是一个旧的帖子,但我想知道你是否有任何想法应该如何打包。正如我所看到的,你将得到4个不同的包: 1:新代码,配置为使用新的数据库(但也是旧的), 2:Db迁移, 3:新代码,修复为不再支持旧db 通常,所有这些更改都已完成,并且提交到源代码控制,触发构建。您是否知道任何可以帮助分解为适当的包以发送到部署管道的工具? – 2016-04-18 18:10:03
“新的应用程序代码得到部署,并在启动时迁移数据库。”我的感觉是,迁移作为部署脚本的一部分运行似乎也是合理的。你看到有什么困难吗? – 2016-10-31 19:20:27