Flyway简介与应用(SpringBoot整合Flyway)

目录

什么是Flyway?

为什么要使用Flyway?

SpringBoot集成Flyway

基本概念

1.Versioned Migrations

2.Repeatable Migrations

使用

其它


什么是Flyway?

Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate。Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot。

开源、简易、约定大于配置。

Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration.

官网:https://flywaydb.org/documentation/

为什么要使用Flyway?

不论是个人还是团队开发,总会面临着数据库表与数据不断变更的情况。面对这种情况,我们自然可以直接到数据库客户端或控制台中执行SQL。但这种操作是不优雅的,也没有引入版本管理的概念。Flyway很好地解决了这个问题,你可以做到每次在项目启动时,自动执行变更SQL脚本。

SpringBoot集成Flyway

基本概念

1.Versioned Migrations

拥有版本、描述与校验和(checksum)三个基本信息,每次启动只执行需要变更的脚本。

2.Repeatable Migrations

拥有描述与校验和(checksum)两个基本信息,每次启动都会执行一遍所有相应的SQL。

使用

maven:


    org.springframework.boot
    spring-boot-starter-web



    mysql
    mysql-connector-java


    org.springframework.boot
    spring-boot-starter-jdbc


    org.flywaydb
    flyway-core

properties:

server.port=8088
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 如果指定 schema 包含了其他表,但没有 flyway schema history 表的话, 在执行 flyway migrate 命令之前, 必须先执行 flyway baseline 命令.
# 设置 spring.flyway.baseline-on-migrate 为 true 后, flyway 将在需要 baseline 的时候, 自动执行一次 baseline.
spring.flyway.baseline-on-migrate=true
#spring.flyway.locations=classpath:/db/migration

可以通过spring.flyway.locations配置修改脚本目录,默认的路径是:classpath:/db/migration

添加SQL脚本:

SQL脚本文件名有要求!!!

Flyway简介与应用(SpringBoot整合Flyway)_第1张图片

默认值 V 表示 Versioned, R 表示 Repeatable。然后双下划线+描述+后缀(默认.sql)。

最后启动项目就会执行相应Migration。

Ps:

prefix: 可配置,前缀标识,默认值 V 表示 Versioned, R 表示 Repeatable
version: 标识版本号, 由一个或多个数字构成, 数字之间的分隔符可用点.或下划线_
separator: 可配置, 用于分隔版本标识与描述信息, 默认为两个下划线__
description: 描述信息, 文字之间可以用下划线或空格分隔
suffix: 可配置, 后续标识, 默认为.sql

其它

flyway 提供命令行工具, 常用的命令包括:
Clean: 删除所有创建的数据库对象, 包括用户、表、视图等. 注意不要在生产库上执行 clean 操作. 
Migrate: 对数据库依次应用版本更改. 
Info: 获取目前数据库的状态. 那些迁移已经完成, 那些迁移待完成. 所有迁移的执行时间以及结果. 
Validate: 验证已 Apply 的脚本是否有变更, Flyway 的 Migration 默认先做 Validate. 
Baseline: 根据现有的数据库结构生成一个基准迁移脚本. 
Repair: 修复命令尽量不要使用, 修复场景有: 1. 移除失败的 migration 记录. 2.已经应用的 SQL 脚本被修改, 我们想重新应用该 SQL 脚本.

你可能感兴趣的:(数据库)