生产数据库中的 Flyway 集成

Posted

技术标签:

【中文标题】生产数据库中的 Flyway 集成【英文标题】:Flyway integration in a production database 【发布时间】:2012-09-16 04:19:49 【问题描述】:

我们有一个生产中的数据库,它在“用户”表中已经有很多行。请考虑 flyway 网站上的以下声明:

如果您有一个尚未被 Flyway 填充的现有数据库 这是要走的路:

创建一个初始迁移脚本,它将重新创建您当前的 状态并给它一个低版本号。 使用 flyway:init 创建元数据表并将此脚本设置为当前版本。

我想使用 flyway 来管理我的架构和数据库中的各种常量,但我不希望 V1__Base_version.sql 包含我们当前生产用户的帐户信息,特别是考虑到它存储在 SCM 中。如果我正确理解了这些说明,我需要能够使用 V1__Base_version.sql “重新创建 [我的] 当前状态”。

那么仅使用架构和常量创建初始迁移是否可以正常工作?还是我们工作站上的数据库需要 100% 匹配生产中的数据库?

【问题讨论】:

如果我是正确的,我会在 24 小时内自己回答这个问题,但我认为只要我在生产数据库上进行 flyway init(假设架构和常量是正确的)我应该是很清楚。 【参考方案1】:

你是对的。 init 命令用于用版本标记生产数据库。

您创建的初始迁移(使用您的 PROD 数据库的结构)适用于其他环境。它永远不会在 PROD 上运行,因为它的版本将低于 init 版本。但是,它将对齐所有环境,以便后续迁移可以平等地应用于所有环境。

【讨论】:

在较新的 flyway 版本中,基线命令 flywaydb.org/documentation/command/baseline 对吗?

以上是关于生产数据库中的 Flyway 集成的主要内容,如果未能解决你的问题,请参考以下文章

飞路集成到现有系统中

Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

使用 Flyway 进行集成测试

Flyway详解以及Springboot集成Flyway(转)

Flyway 助力数据库脚本自动化管理攻略

Flyway详解以及Springboot集成Flyway, 数据库脚本版本管理