https://blog.waterstrong.me/flyway-in-practice/ 此篇博文对flyway讲解的很清楚了,我在这只是稍微增加一些说明;因此,看这个文档前先仔细看一下这篇博文。
1、下载flyway地址:https://flywaydb.org/getstarted/download
软件是免安装的,文件目录结构:
2、修改配置文件
在conf目录下有一个flyway.conf文件,里面有数据库的配置:
3、使用
我在这里是使用的是命令行的方式,具体在gradle里配置使用方式还不太清楚,下面简述一下命令的使用。
3.1、flyway migrate
此命令会自动检查数据库脚本是否有变化,如果有变化,则执行脚本,更新数据库版本,如果数据库初始状态是空库,则会自动创建schema_version 表,用于存储数据库操作的版本记录,
只要数据库脚本有变化,都需要执行此命令。
3.2、flyway clean
清除schema_version中记录所有表结构,视图,存储过程,函数以及所有的数据等都会被清除。
3.3、flyway info
打印schema_version中记录信息
3.4、flyway validate
Validate是指验证已经Apply的Migrations是否有变更,Flyway是默认是开启验证的。
3.5、flyway baseline
Baseline 是指数据库非空状态下使用flyway首先执行的命令,用于创建schema_vision表。
3.6、flyway repair
Repair会修复Metadata表的错误,通常有两种用途:
1、移除失败的Migration记录,该问题只是针对不支持DDL事务的数据库。
2、重新调整已经应用的Migratons的Checksums值,比如:某个Migratinon已经被应用,但本地进行了修改,又期望重新应用并调整Checksum值,不过尽量不要这样操作,否则可能造成其它环境失败。
Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。
Flyway主要基于6种基本命令:Migrate, Clean, Info, Validate, Baseline and Repair,稍候会逐一分析讲解。目前支持的数据库主要有:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix.