我已将产品交付给客户。现在我已经升级了产品,其中包括对数据库的更改。
客户想要升级产品。现在 Flyway 将帮助客户数据从旧版本迁移到新版本。如果这是一个有效的用例,请告诉我。 flyway 文档仅讨论其在开发期间的使用。
最佳答案
Flyway 允许您通过按定义的顺序运行一组脚本来更改数据库。这些脚本称为“迁移”,因为它们允许您将数据库从一个版本“迁移”到另一个版本。
我们的想法是,您可以从一个空数据库开始,每个迁移脚本都会依次将该数据库从空数据库提升到当前版本。但是,也可以通过创建“基线”迁移从现有数据库开始。
作为SudhirR说,Flyway 的主要用例是定义模式更改。但是,也完全可以更改数据。由于 Flyway 只是运行纯 SQL,原则上,几乎所有您可以在 SQL 脚本中执行的操作也可以在 Flyway 迁移中执行。
在您描述的情况下,应该可以使用 Flyway 迁移客户数据库。您可以采取的步骤是:
- 生成包含生产数据库的整个 DDL(包括索引、触发器、过程...)的 sql 脚本。为此,您需要为数据库中存在的所有引用数据添加插入语句。
- 将此脚本保存在您的 Flyway 项目中,类似于“V1__base_version.sql”
- 对您的生产数据库运行
flyway baseline
命令- 这将设置您的生产数据库以用于 Flyway
- 添加新的迁移脚本以将您客户的数据迁移到新版本
- 例如创建新表,将旧表中的数据复制到新表中,删除旧表
- 运行
flyway migrate
升级生产
这些步骤改编自 Flyway 文档页面 here .
当然你应该阅读 Flyway docs并在对生产运行任何操作之前在一次性数据库上手动测试。不过,我认为原则上 Flyway 可能非常适合您的用例。
关于flyway - 这是 Flyway 用例吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182865/