【发布时间】:2020-11-25 08:11:17
【问题描述】:
我们从项目开始就没有使用 Flyway。我们处于先进的发展状态。专家评审建议在我们的项目中使用 Flyway。
问题是我们也将部分服务(微服务)转移到了另一个测试环境中。
正确实施 Flyway 的最佳方法是什么?要求是:
-
在开发环境中,无需更改已经存在的模式。但是所有新脚本都应该使用 Flyway 完成。
-
在测试环境中,无需更改已经存在的架构。但是,当我们将项目从 Dev 迁移到测试时,应该使用 Flyway 自动创建测试环境中不可用的内容。
-
当我们迁移到一个全新的环境(UAT、生产等)时,应该使用 Flyway 自动创建整个架构。
从文档中,我的理解是:
- 将开发模式(DDL 和 DML)备份为 SQL 脚本文件,提供类似 V1_0_1__initial.sql 的文件名。
- 使用“flyway clean”清理开发数据库。
- 基准开发数据库“flyway baseline -baselineversion=1.0.0”
- 现在,执行“flyway migrate”,这将应用 SQL 脚本文件 V1_0_1__initial.sql。
- 任何新脚本都应该使用更高的版本号编写(例如 V2_0_1__account_table.sql)
这是正确的方法还是有更好的方法?
问题是我有一个测试数据库,其中我们有不同的数据集(开发和测试中的数据不同,我想在两种环境中保持数据不变)。如果是这样,当我们从Dev环境中取出并在每个环境中分别应用它们时,将DDL和DML分开在不同的脚本文件中是否很好?可根据需要手动添加DML;但如果我做对了就有点困惑。
提前致谢。
【问题讨论】:
标签: flyway