连续交付中的生产数据迁移模式

时间:2012-07-23 10:55:07

标签: database postgresql continuous-deployment flyway

连续交付中的生产关系数据库(和架构)迁移模式是什么?

在许多传统开发中,DBA在当前发布周期中创建的许多较小脚本中安排了一个大型迁移脚本。但是在CD中,开发人员可能希望将更改推送到生产环境,而不是等待用其他脚本编译它们。

我知道rails-migration,但对我来说使用原始sql脚本看起来更合理。

我也看到像flyway这样的工具来管理迁移,但我还没有看到很多人在生产中使用它们。这就是为什么我想知道这里的常见做法是什么。

1 个答案:

答案 0 :(得分:10)

Flyway非常适合持续交付/部署。许多客户在所有环境中都使用它,包括生产。

跨环境级联数据库迁移最重要的一件事就是实现3个步骤:

第1步

旧应用程序代码与旧数据库一起使用。

第2步

部署新的应用程序代码,并在启动时迁移数据库。此迁移必须向后兼容,以便旧应用程序代码仍可与新数据库一起使用。这很重要,因为:

  • 然后,您可以进行滚动升级,一次升级一个节点,直到所有节点都有新的应用程序代码
  • 如果新的应用程序代码被破坏,则立即回滚到旧的应用程序代码

此步骤可能涉及兼容性视图和触发器以完成工作。

第3步

在证明更改有效之后,下一版本的应用程序代码就会生效 与必要的数据库迁移一起部署,以丢弃任何剩余的过时(来自步骤1)和兼容性(来自步骤2)结构。