数据库版本控制工具——flyway的安装与使用
2017/11/15
posted in
MySQL
2017/11/15
posted in
MySQL
在该页面选择需要安装的包下载
https://flywaydb.org/getstarted/download
本次我们安装的是Command-line tool
只需要解压就行,解压缩目录下会有两个可执行文件flyway
和flyway.cmd
目录结构如下
安装目录下的conf/flyway.conf
是配置文件
你也可以在别处建立配置文件
如果在执行flyway
命令时没有使用 -configFile
参数指定配置文件的话,配置文件会以以下顺序加载
/conf/flyway.conf
/flyway.conf
/flyway.conf
后面加载的配置会覆盖前面加载的配置
我们还可以使用 -X
参数,输出debug
信息
使用 -q
参数,不打印输出(errors
和 warnings
除外)
flyway
有6个基本命令
migrate
、clean
、info
、validate
、baseline
、repair
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 migrations
和 Repeatable migrations
。即前缀为“V”和“R”的migrations
。Versioned migrations
是将自身的版本号和schema_version
的最新版本号比较来决定是否执行的,Versioned migrations
的版本号比schema_version
的最新版本号高的将执行。Repeatable migrations
则是和schema_version
中的checksum
进行比较,如果脚本名称和checksum
值都相同,则不执行。
不支持回滚
flyway
更适合单一服务的版本迭代,如果是多个服务并行开发,甚至在上线前都无法确定哪些服务需要上线,flyway
的版本控制则会制约数据库的版本迭代