【问题标题】:Is this a Flyway use case这是 Flyway 用例吗
【发布时间】:2019-10-02 22:49:02
【问题描述】:

我已将产品交付给客户。现在我已经升级了产品,其中包括对数据库的更改。

客户想要升级产品。现在 Flyway 将帮助客户数据从旧版本迁移到新版本。如果这是一个有效的用例,请告诉我。 flyway 文档只讨论了它在开发过程中的使用。

【问题讨论】:

  • Flyway 是关于数据库模式迁移的,而您的用例是关于数据迁移的。我认为 Flyway 不适用于您的用例。

标签: flyway


【解决方案1】:

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 可能非常适合您的用例。

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多