目录
3、在src/main/resources下新建/db/migration文件夹,并创建sql脚本文件:
一、Flyway简介
Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate。Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复。
Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表。 表中保存了版本,描述,要执行的sql脚本等;
二、如何使用Flyway
Flyway的运行机制很简单,其中Migrate是Flyway工作流的核心功能,主要目的就是把数据库Schema迁移到最新版本,Flyway每次在执行Migrate的时候会检测你的数据库中的flyway_schema_history表,如果它没有检测到,会自动创建一张新的flyway_schema_history表用于版本控制。当检测到你有新的版本需要迁移的时候,Flyway会逐一比对flyway_schema_history表中的已存在的版本记录,如果有未应用的Migrations,Flyway会获取这些Migrations并按次序Apply到数据库中,否则不需要做任何事情。另外,通常在应用程序启动时应默认执行Migrate操作,从而避免程序和数据库的不一致性。
更新flyway_schema_history中的版本记录用于以后的追踪。
以上步骤Flyway都会自动替我们完成,所以在实际使用中我们真正需要注意的就是如何按照Flyway的约定去完成Migrations。
三、核心概念
1、Migration
Flyway将每一个数据库脚本称之为:migrations,flyway支持三种类型的migration:
- Versioned migrations:最常用的migration,可以简单的理解为数据库升级脚本
- Undo migrations:数据库版本回退脚本,需要Pro版本,忽略,而且使用过程存在较大风险,undo操作目前只能通过plugin或者command-line来执行
- Repeatable migrations:可重复执行的migration,例如create or replace脚本,当脚本checksums改变时会重新执行