使用Flyway做数据库版本管理
Flyway是一个开源的数据库版本控制迁移工具,使用它可以很便利的控制数据库在迭代过程中产生的变动和更新操作。支持多种数据库以及多种使用方式,如Client工具、Maven插件、Spring Boot集成等等。
本文介绍了Flyway在Spring Boot中的使用。
工作原理
Flyway会在目标数据库中新增一个记录迁移版本的元数据表,用来跟踪我们已经完成了哪些迁移脚本以及何时完成。 此元数据表记录了已经应用的迁移脚本、版本号、描述、校验和以及状态等:
执行步骤:
- 检查数据库以定位其元数据表(可配置该表名,在Spring Boot中的默认配置为flyway_schema_history)。如果该元数据表不存在则会创建一个;
- 扫描应用程序类路径以查找可用迁移脚本;
- 将脚本与元数据表进行比较。如果版本号低于或等于当前应用的版本,则将其忽略;
- 将其他剩余的迁移标记为待处理的迁移。根据版本号排序并按顺序执行;
- 随着每次迁移的完成,元数据表都会相应地更新。
脚本命名说明
Flyway使用约定的脚本文件命名方式代替配置,文件名格式为:V{version}__{description}.sql 。
首字母可以是V或者R,V表示是版本化文件,执行过后不可再变。R表示如果当前脚本checksum有变化,就会在迁移时再次执行。
version表示版本号,以_
或者.
分隔。
description表示版本描述,与version之间使用两个下划线__
分隔,在版本描述中如果有多个单词则以_
或空格
分隔。
示例:
V1_1__Init.sql
V1_2__Add_table.sql
Spring Boot实战
全新接入
- 在Spring Boot工程中添加Maven依赖
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<!-- 如果导入了Spring Boot