Flyway提供的六种命令

Flyway提供6种关键命令来管理数据库版本,包括Migrate、Clean、Info、Validate、Baseline和Repair。Migrate用于将数据库更新到最新版本;Clean清除数据库对象;Info显示迁移详情和状态;Validate验证已应用的迁移;Baseline在已有Schema的数据库中建立Metadata表;Repair修复Metadata表问题。

Flyway对数据库进行版本管理主要由Metadata表(默认是flyway_schema_history)和6种命令完成,Metadata主要用于记录每次执行的脚本和version等信息,下面一一介绍。

Metadata表(flyway_schema_history)

Flyway中最核心的就是用于记录所有版本执行结果和状态的Metadata表,在Flyway首次启动时会创建默认名为flyway_schema_history的元数据表,表结构如下(MySQL):
在这里插入图片描述

1. Migrate命令

将Schema Migrate到最新版本。如果flyway_schema_history不存在,Flyway将自动创建它。Migrate是Flyway工作流程的核心。它将扫描文件系统或类路径以获取可用的Migrate。它会将它们与已应用于数据库的Migrate进行比较。如果发现任何差异,它将Migrate数据库以缩小差距。Migrate最好应在应用程序启动时执行,以避免数据库与代码期望之间的任何不兼容性。
配置项:locations
在这里插入图片描述

2. Clean命令

清除掉对应数据库Schema中的所有对象。Clean对开发和测试有很大的帮助。通过彻底清除已配置的schemas,它将有效地为您提供一个全新的开始。所有对象(表、视图、过程等)都将被删除。注意:不要在生产环境使用
在这里插入图片描述

3. Info命令

打印所有Migrations的详细信息和状态信息。打印信息让你看到哪些Migrations已经应用,哪些迁移还在等待执行,何时执行,以及迁移是否成功。
在这里插入图片描述

4. Validate命令

验证已经Apply的Migrations是否有变更,Flyway是默认是开启验证的。Validate原理是对比Metadata表与本地Migrations的Checksum值,如果值相同则验证通过,否则验证失败,从而可以防止对已经Apply到数据库的本地Migrations的无意修改。
在这里插入图片描述

5. Baseline命令

Baseline是针对已经存在Schema结构的数据库的一种解决方案,即实现在非空数据库中新建Metadata表,并把Migrations应用到该数据库。Baseline可以应用到特定的版本,这样在已有表结构的数据库中也可以实现添加Metadata表,从而利用Flyway进行新Migrations的管理了。如果表中已经存在了Metadata表,那么baseline相关的配置无效。
主要配置有:

  1. baselineVersion
  2. baselineDescription
  3. table
    在这里插入图片描述
6. Repair命令:修复Metadata表。

Repair是修复flyway_schema_history表的问题的工具。它有两个主要用途:

  1. 删除失败的迁移条目
  2. 将应用的迁移的校验和,描述和类型与可用的迁移重新对齐
    在这里插入图片描述
### Flyway在软件开发中对数据库表及序列的管控方法 #### 版本控制 Flyway 通过版本号来管理数据库脚本。每个 SQL 脚本都有一个唯一的版本号,Flyway 会按照版本号的顺序执行脚本。脚本命名遵循特定的格式,例如 `V1__Create_users_table.sql`,其中 `V1` 表示版本号,`__` 是分隔符,后面是对脚本的描述。这样可以清晰地记录每个版本的数据库变更,方便追溯和管理。 #### 数据库变更跟踪 Flyway 会在数据库中创建一个名为 `flyway_schema_history` 的表,用于记录每次数据库变更的详细信息,包括版本号、脚本名称、执行时间、执行结果等。通过这个表,可以随时查看数据库的变更历史,确保变更的可追溯性和一致性。 #### 测试环境验证 在将变更应用到生产环境之前,先在测试环境中使用 Flyway 执行数据库脚本。可以利用 Flyway 的测试功能,确保脚本在测试环境中能够正常执行,并且不会引入新的问题。例如,使用以下命令在测试环境中执行迁移: ```bash flyway -url=jdbc:mysql://test-server:3306/testdb -user=testuser -password=testpassword migrate ``` #### 审批流程 建立严格的变更审批流程,所有的数据库表和序列变更都需要经过相关人员(如数据库管理员、开发负责人等)的审批。审批通过后,将对应的 Flyway 脚本纳入版本控制系统,并在生产环境中执行。 ### 系统上线时用 Flyway 快速提炼部署 SQL 的方法 #### 自动化迁移 Flyway 可以自动检测数据库的当前版本,并根据版本号执行未执行的迁移脚本。在系统上线时,只需要在生产环境中运行 `flyway migrate` 命令Flyway 会自动找出需要执行的脚本并按顺序执行。示例命令如下: ```bash flyway -url=jdbc:mysql://prod-server:3306/proddb -user=produser -password=prodpassword migrate ``` #### 生成 SQL 脚本 如果需要手动审查或在特定环境中执行 SQL 脚本,可以使用 Flyway 的 `info` 和 `repair` 命令来生成 SQL 脚本。`info` 命令可以查看数据库的当前状态和待执行的迁移脚本,`repair` 命令可以修复 `flyway_schema_history` 表中的错误记录。例如,使用以下命令生成 SQL 脚本: ```bash flyway -url=jdbc:mysql://prod-server:3306/proddb -user=produser -password=prodpassword info flyway -url=jdbc:mysql://prod-server:3306/proddb -user=produser -password=prodpassword repair ``` #### 增量部署 Flyway 支持增量部署,只执行自上次上线以来的增量变更脚本。通过版本号的管理,Flyway 可以准确地识别哪些脚本需要执行,哪些已经执行过。在系统上线时,Flyway 会自动跳过已经执行的脚本,只执行新的脚本。 #### 配置管理 可以通过配置文件(如 `flyway.conf`)来管理 Flyway 的参数,包括数据库连接信息、脚本存放路径等。在系统上线时,可以根据不同的环境(如开发、测试、生产)使用不同的配置文件,确保脚本在不同环境中能够正确执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值