数据库版本控制工具——flyway的安装与使用

2017/11/15 posted in  MySQL
Tags: 

安装:

在该页面选择需要安装的包下载

https://flywaydb.org/getstarted/download

本次我们安装的是Command-line tool

只需要解压就行,解压缩目录下会有两个可执行文件flywayflyway.cmd

配置:

目录结构如下

安装目录下的conf/flyway.conf是配置文件

你也可以在别处建立配置文件

如果在执行flyway命令时没有使用 -configFile 参数指定配置文件的话,配置文件会以以下顺序加载

/conf/flyway.conf
/flyway.conf
/flyway.conf

后面加载的配置会覆盖前面加载的配置

我们还可以使用 -X 参数,输出debug信息

使用 -q 参数,不打印输出(errorswarnings 除外)

使用:

flyway有6个基本命令

migratecleaninfovalidatebaselinerepair

migrate:把数据库的表结构升级到最新版。会根据你提供是SQL文件升级。SQL文件默认存储在安装路径下的sql目录(该目录可以根据 flyway.locations 参数修改)。migrate会扫描该目录下的“.sql”文件,并根据文件名获取版本和描述信息。文件名的前缀有两种“V”和“R”。“V”代表versioned,指用于版本控制的文件;“R”代表repeatable,指可以重复执行的文件。“V”后面跟版本号,版本号是用点(.)或者下划线(_)分割的数字。前缀或者版本号与描述之间用双下划线(__)分割。

clean:clean会将 flyway.schemas 中配置的数据库全部清空。

info:显示版本、描述、执行时间和状态的信息。

validate:对已经应用的migrations进行校验。

baseline:如果指定的数据库已经有表结构存在了,需要使用baseline初始化 schema_version 表的信息。

repair:修复 schema_version 表。

说明:

Versioned migrationsRepeatable migrations。即前缀为“V”和“R”的migrationsVersioned migrations是将自身的版本号和schema_version的最新版本号比较来决定是否执行的,Versioned migrations的版本号比schema_version的最新版本号高的将执行。Repeatable migrations则是和schema_version中的checksum进行比较,如果脚本名称和checksum值都相同,则不执行。

不足:

不支持回滚

flyway更适合单一服务的版本迭代,如果是多个服务并行开发,甚至在上线前都无法确定哪些服务需要上线,flyway的版本控制则会制约数据库的版本迭代