当前位置: 首页 > 知识库问答 >
问题:

将飞行道集成到现有数据库中

夏景同
2023-03-14

我们从项目开始就没有使用过Flyway。我们正处于先进的发展状态。专家评论建议在我们的项目中使用Flyway。

问题是我们已经将部分服务(微服务)转移到了另一个测试环境中。

正确实现Flyway的最佳方式是什么?这些要求是:

>

  • 在开发环境中,无需更改已存在的架构。但是所有新脚本都应该使用Flyway来完成。

    在测试环境中,不需要改变已经存在的模式。但是,当我们将项目从开发迁移到测试时,测试环境中不可用的东西应该使用Flyway自动创建。

    当我们迁移到一个全新的环境(UAT、生产等)时,应该使用Flyway自动创建整个模式。

    从文档中,我理解的是:

      < li >将开发模式(DDL和DML)的备份作为SQL脚本文件,使用类似V1_0_1__initial.sql的文件名。 < li >使用" flyway clean "清理开发数据库。 < li >为开发数据库建立基线“flyway Baseline-Baseline version = 1 . 0 . 0” < li >现在,执行“flyway migrate”将应用SQL脚本文件V1 _ 0 _ 1 _ _ initial . SQL。 < li >任何新脚本都应该使用更高的版本号编写(如V2 _ 0 _ 1 _ _账户_表格. sql)

    这是正确的方法还是有更好的方法来做到这一点?

    问题是,我有一个测试html" target="_blank">数据库,其中有不同的数据集(开发和测试中的数据是不同的,我希望保留这两个环境中的数据)。如果是这样,当我们从开发环境中取出DDL和DML并在每个环境中分别应用它们时,将它们分离在不同的脚本文件中是不是很好?可以根据需要手动添加DML但我有点困惑,我是否在做正确的事情。

  • 共有2个答案

    南门展
    2023-03-14

    这是我对flyway与prod DB集成的how-to说明:https://delicious-snipe-938 . idea . site/How-to-integrate-Flyway-with-existing-MySQL-d b-in-Prod-PostgreSQL-is-similar-1 eabafa 8 a 0 e 844 e 88205 c2f 32513 bbbe。

    司徒杜吟
    2023-03-14

    所以,这里实际上有两个问题。数据管理和飞行路线管理。

    在数据管理方面,是的,那应该是另外一回事。数据不断增长。除了简单的查找表之外,试图从源代码控制中管理数据很快就会变得非常困难。更不用说你想要不同环境下的不同数据。这也使得自动化部署更加困难(如果您坚持走这条路,分支将是您的朋友,每个数据集一个分支,然后适当地部署)。

    是的,您可以在现有项目上实现Flyway。关键是建立基线。你不必做上面列出的所有步骤。假设您有一个现有的数据库。您必须获得定义该数据库的脚本。这个脚本应该包含所有适当的DDL(如果您愿意,还可以包含DML)。按照飞行路线标准命名。类似于V1.0__Baseline.sql。

    有了这个,你所要做的就是运行:

    flyway baseline
    

    这将建立您现有的代码库作为起点。从那里,您只需要按照命名标准创建脚本:V1.1xxx V2.0xxx V53000.1xxx。并运行

    flyway migrate
    

    部署适当的更改。

    唯一需要注意的是,正如文档所述,您必须确保您的所有数据库都与您正在创建并标记为基线的V1.0相匹配。当您引入新的变更并将它们迁移到位时,任何偏差都会导致错误。只要您有匹配的基线点,您就应该能够在不同的环境中毫无问题地处理不同的数据

     类似资料:
    • 我们正在考虑将flyway集成到我们的系统中,因为它似乎是以有效方式管理数据库迁移的绝佳工具。 然而,我不太确定如何继续: 我们有三个不同的数据库 < li >生产环境(MySQL) < li >测试环境(MySQL) < li >单元测试(H2内存中) 它们都包含不同的数据(不同的用户等)。数据库之间没有公共数据(在飞行路线页面上,这称为参考数据),只有结构应该保持不变。 看着网站,我的理解是这

    • 我们从项目一开始就没有使用过Flyway。我们正处于先进的发展状态。让我们在与詹金斯的项目中开始使用Flyway。 从留档,我了解到的是: 将开发模式(DDL和DML)的备份作为SQL脚本文件,提供一个像V1_0_1__initial.SQL这样的文件名。 使用“flyway clean”清理开发数据库。 开发数据库基线 “飞行路线基线 -基线版本 =1.0.0” 现在,执行"flyway迁移",

    • 我想介绍现有生产数据库上的flyway。我读过https://flywaydb.org/documentation/existing但我想跳过“从生产中提取DDL和参考数据”这一步 让我解释一下原因: 我计划在 DEV 中有一个更接近生产数据的数据库,所以我将进行 PROD 转储,匿名化客户相关数据并将其放在 DEV 上 当在 DEV 中具有来自 PROD 的相同架构时,飞行方式将用于迁移。我的方

    • 问题内容: 我正在使用Microsoft Sql Server Management Studio。我目前有一个包含数据的现有数据库,我将其称为DatabaseProd。我还有一个第二个数据库,其中包含用于测试的数据,因此数据既不完全正确也不是最新的。我将这个数据库称为DatabaseDev。 但是,DatabaseDev现在包含新添加的表和新添加的列等。 我想将此新模式从DatabaseDev复

    • Adding the capability to connect databases to Express apps is just a matter of loading an appropriate Node.js driver for the database in your app. This document briefly explains how to add and use som

    • 我在生产中有一个基于Hibernate的应用程序,有一个大型数据库。我需要在这个应用程序中向两个实体(两个表)添加审计,我决定使用Envers。 对于每次插入、更新或删除,Envers都会向实体的审核表中添加一条新记录。 如果从应用程序一开始就支持Envers,那么审计表将在实体创建(INSERT)时填充。 Envers留档非常薄,没有提到任何关于将Envers添加到现有应用程序的内容。 如果我简