在开发过程中,我们经常使用git来控制代码版本,非常的方便,哪数据库其实也有版本控制中间件,就是大名鼎鼎的FlyWay,目前该手册也是给客户项目写的部署及配置手册,应该是比较详情的操作步骤了,如果有问题可以留言交流,或者给我发私信也可以。

如果条友喜欢,还请给个关注

序号

时间

版本

作者

备注

1

2021/08/31

1.0

刘志虎

文档初始化

2

2021/09/02

1.1

刘志虎

添加注意事项

3

2021/09/06

1.2

刘志虎

增加内部沟通会建议

4

2021/11/01

1.3

刘志虎

修改文件命名规范、注意事项

有变动否成功迭代否程序运行数据库版本对比数据库版本对比执行新脚本结束程序正常启动程序终止

一、数据库变更常见问题

  1. 无法确认是否遗漏了某个数据库脚本未执行
  2. 无法确认在某台机器上执行过哪些数据库脚本
  3. 代码版本库无法管理数据库脚本依赖关系

二、FlyWay提供的功能

#yyds干货盘点#数据库版本控制中间件FlyWay部署安装及使用实例_spring

  1. Flyway可以自动检测指定目录下的数据升级文件并升级至指定版本
  2. Flyway可以检测已执行过的数据升级文件是否有改动及是否有错误
  3. Flyway可随时展示当前数据库版本和已执行过的数据库升级
  4. Flyway可以依照数据库脚本文件命名规则依次执行数据库脚本
  5. Flyway可以自动检测指定目录下的数据回滚文件并回滚至指定版本

三、使用流程

  1. 首先POM中添加
<dependency>  
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>6.4.4</version>
</dependency>
  1. 文件目录

#yyds干货盘点#数据库版本控制中间件FlyWay部署安装及使用实例_数据_02

脚本文件统一放在 resources>db>migration目录下

文件命名规则

V模块内部版本__上线版本_备注.sql

  • 模块内部版本是递增的数字类型
  • 发布版本Release版本号,各个模块内部版本可能不一致,但同一个时间发布的版本的Release必须一致,如果不一致,会按照从小到大的顺序执行
  • 备注是添加有意义的信息,方便知道脚本内容,比如模块名称
  • 脚本文件一般分为R、V开头的,R开头的是可以多次执行的脚本,V是有版本的脚本。
  1. application.properties 配置信息
spring.flyway.enabled=true  spring.flyway.baseline-on-migrate=true spring.flyway.check-location=true spring.flyway.locations=classpath:/db/migration spring.flyway.validate-on-migrate=true
  • flyway.enabled 是否开启,开发、测试环境开始,生产环境设置
  • falseflyway.baseline-on-migrate 已当前数据库为基准
  • flyway.check-location 检测脚本的路径是否存在
  • flyway.validate-on-migrate 校验脚本
  1. 程序执行

mvn spring-boot:run

  • 直接执行命令或者点击项目的运行都可以执行,可以到类似如下效果

#yyds干货盘点#数据库版本控制中间件FlyWay部署安装及使用实例_数据库_03

  1. 微服务注意事项
  • 约定大于规范
  • 原则是数据库及表的DDL操作唯一、DML操作可以多处,但全局、字典类型数据要提前约定好,谁建谁维护的原则
  • V2.0.0__20211111_cmdb.sql
  • V2.0.1__20211111_cmp.sql
  • V2.0.2__20211111_ecc.sql
  • V2.0.3__20211111_sdn.sql
  • 开发/测试环境开启自动版本控制功能,生产关闭发
  • 布生产的时候,需要把各个模块的SQL脚本手动的合并后执行一次