数据库版本管理工具flyway

Flyway是一款强大的数据库版本管理工具,提供自动升级、规约优于配置、SQL和Java代码支持等功能。它能在多种环境下执行,包括命令行、Ant、Maven和应用内。Flyway的数据库脚本遵循特定命名规则,存储在`db/migration`目录。用户可通过不同命令进行升级、清理、验证和修复操作,确保集群环境的安全性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flyway 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。

Flyway 的特性

  • 自动升级(自动发现更新项):Flyway 会将任意版本的数据库升级到最新版本。Flyway 可以脱离JVM 环境通过命令行执行,可以通过Ant 脚本执行,通过Maven 脚本执行(这样就可以在集成环境自动执行),并且可以在应用中执行(比如在应用启动时执行)。
  • 规约优于配置:Flyway 有一套默认的规约,所以不需要修改任何配置就可以正常使用。
  • 既支持SQL 脚本,又支持Java 代码:可以使用SQL 脚本执行数据库更新,也可以使用Java 代码来进行一些高级数据升级操作。
  • 高可靠性:在集群环境下进行数据库升级是安全可靠的。
  • 支持清除已存在的库表结构:Flyway 可以清除已存在的库表结构,可以从零开始搭建您的库表结构,并管理您的数据库版本升级工作。
  • 支持失败修复。新的2.0 版本提供了repair 功能,用于解决数据库更新操作失败问题。

如何使用Flyway

使用Flyway ,我们需要准备Flyway 将要执行的数据库脚本(Flyway 支持sql 脚本与java 代码,这里认为在Flyway下执行数据库更新操作的java 代码也是一种数据库脚本),然后通过Flyway 提供的几种不同运行方式来执行这些脚本。(以下配置参数说明基于Flyway 1.7 版本,新的2.0 版本在配置参数上有不少变动,与下面的介绍会有不少出入,以下说明仅供参考)

数据库脚本

Flyway 的主要任务是管理数据库的版本更新,在Flyway 中称每次数据库更新为一个migration ,为了更顺口,我们下面称之为数据库脚本。Flyway 支持SQL-based migrations 和Java-based migrations 。

Flyway 支持的数据库脚本有sql 脚本与java 代码,sql 脚本即普通的sql 脚本,包含创建数据库、表,更新库表结构,数据插入、更新、删除等sql 语句,java 代码则是通过一个有效的数据源,使用java 语言来进行数据库的操作,这里针对的读者是对数据库操作有一定熟悉程度的群体,不再详细讲解如何编写数据库脚本。

Flyway 的sql 脚本与java 代码都遵循以下默认规约:

 Flyway 默认规约

  • SQL 脚本文件默认位置是项目的源文件夹下的db/migration  目录。
  • Java 代码默认位于db.migration  包。
  • SQL 脚本文件及Java 代码类名必须遵循以下命名规则:V<version>[_<SEQ>][__description] 。版本号的数字间以小数点(. )或下划线(_ )分隔开,版本号与描述间以连续的两个下划线(__ )分隔开。如V1_1_0__Update.sql 。Java 类名规约不允许存在小数点,所以Java 类名中版本号的数字间只能以下划线进行分隔。


目前flyway最新版本3.2.1  链接:http://flywaydb.org/documentation/commandline/

命令信息如下:

清空数据库(慎用,会删除所有的数据库对象,包括表/视图/存储过程...),可以执行以下语句:

flyway clean

如果想恢复最新版本数据库结构,可以先清空数据库,再执行以下语句:

flyway migrate

如果想恢复特定版本数据库结构,可以先清空数据库,再执行以下语句:

flyway migrate -target=1.0.1.002

如果想查看当前数据库状态信息,可以执行以下语句:

flyway info

Flyway还有validate,baseline,repair等命令,并且支持Maven,详情参阅Flyway官网

在命令行指定不同的配置文件,可以操作不同的数据库:

[deploy@iZ94y8mdqg3Z ~]$ flyway info -configFile=/opt/flyway/conf/flyway_test2.conf
Flyway 3.2.1 by Boxfuse

Database: jdbc:mysql://localhost:3306/test2 (MySQL 5.6)

+-----------+-----------------------+---------------------+---------+
| Version   | Description           | Installed on        | State   |
+-----------+-----------------------+---------------------+---------+
| 1.0.0     | << Flyway Baseline >> | 2015-09-28 20:29:12 | Baselin |
| 1.0.4.001 | test data              | 2015-09-28 20:30:33 | Success |
+-----------+-----------------------+---------------------+---------+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值