什么是Flyway
Flyway官方网站:点击这里
官方描述:
Flyway extends DevOps to your databases to accelerate software delivery and ensure quality code.
-- Flyway 将 DevOps 扩展到您的数据库,以加速软件交付并确保代码质量。
From version control to continuous delivery, Flyway builds on application delivery processes to automate database deployments.
-- 从版本控制到持续交付,Flyway 以应用程序交付流程为基础来自动化数据库部署。
Flyway是一个开源的数据库迁移工具,用于在应用程序的开发周期中管理和跟踪数据库的变化。
数据库迁移是指对数据库结构和数据进行变更的过程,包括创建表、修改表结构、添加数据等操作。在软件开发中,随着应用程序的不断演进和迭代,数据库的结构和数据也需要相应地进行调整和变更。Flyway帮助开发人员更好地管理这些变化,确保数据库与应用程序的版本保持一致。
与Spring集成
1. 引入依赖:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.15.0</version>
</dependency>
2. 于spring配置文件中开启flyway
spring:
flyway:
enabled: true
3. 管理sql脚本
目录
Spring项目中,flyway约定将sql脚本置于src/main/resources/db/migration
目录下。
sql脚本命名方式
V<version>__<description>.sql
脚本为版本号,可以为数字与小数点的合理组合 - 如:
1
,1.1.1.1.1
等
- 如:
为脚本描述信息,可自由填写
效果
db/migration
目录下的多个sql脚本执行顺序为依照版本号由小到大执行
项目启动后,若原数据库为空,则按序自动执行全部脚本。
若向db/migration
中添加版本号更大的脚本,则再次启动项目后,会执行新增脚本。
规范
- 脚本版本不能相同
- 已执行脚本不可变更或删除
- 默认配置下,不能添加比已执行脚本版本低的脚本
原理
flyway自动在数据库中创建表flyway_schema_history
:
表内数据:
可以看到,字段包括:
- 执行位次
- 版本号
- 描述信息
- 脚本类型
- 脚本名
checksum
- 执行用户
- 执行时间戳
- 执行时长
- 执行是否成功
每次spring项目启动时,flyway模块会做如下操作:
- 检查数据库连接
- 扫描指定位置(默认为
db/migration
)脚本并加载
- 此时会检查文件的命名格式
- 检查
flyway_schema_history
表是否存在,不存在则创建 - 进行文件与元数据比对
- 从
flyway_schema_history
中检索最大版本,大于此版本的脚本标记为未执行 - 比对已执行脚本的checksum,确保未被修改
- 执行未执行脚本,每执行一条,就向
flyway_schema_history
中插入一条元数据
总结
本文简单记录了spring集成flyway的配置方法与使用方式,并阐述了flyway约定的一些规范,最后简单描述了flyway的工作原理。仅供入门参考。
标签:脚本,Spring,数据库,flyway,初识,Flyway,sql,执行 From: https://www.cnblogs.com/hsjia/p/17479689.html