Flyway自学之路-01(Flyway简介)

1.1、Flyway是什么

Flyway是一款数据库迁移(migration)工具。简单点说,就是在你部署应用的时候,帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本,你可以将脚本打包到应用程序中,在应用程序启动时,由Flyway来管理这些脚本的执行,这些脚本被Flyway称之为migration。

就目前而言,我们部署应用的流程大概是这样的:

  1. 开发人员将应用程序打包、按顺序汇总并整理数据库升级脚本
  2. DBA拿到数据库升级脚本检查、备份、执行,以完成数据库升级
  3. 应部署人员拿到应用部署包,备份、替换,以完成应用程序升级

引入Flyway之后的应用部署流程大概是这样的:

  1. 开发人员将应用程序打包
  2. 应部署人员拿到应用部署包,备份、替换,以完成应用程序升(Flyway将自动执行升级/备份脚本)

1.2、Flyway如何工作

最简单的理解方式是:简单我们在一个空数据库上部署集成了Flyway的应用:

è¿éåå¾çæè¿°

Flyway将在这个空数据中创建一张表,用于记录migration的执行情况,表名称默认为:flyway_schema_histor,老版本的表名称:schema_version

迁移

è¿éåå¾çæè¿°

紧接着,Flyway根据表中的记录决定是否执行应用程序包中提供的migration

è¿éåå¾çæè¿°

最后将执行结果写入flyway_schema_histor并校验执行结果

è¿éåå¾çæè¿°

flyway_schema_histor打印有关所有迁移的详细信息和状态信息。

信息

 

信息可让您知道自己的立场。一览无余,您将看到哪些迁移已被应用,哪些迁移仍在等待执行,何时执行以及它们是否成功。

下次版本迭代时,提供新的migration,会根据flyway_schema_histor的记录执行新migration

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

验证

对照可用迁移验证已应用的迁移。

验证

 

验证可帮助您验证应用于数据库的迁移是否与本地可用的迁移匹配。

这对于检测可能阻止您可靠地重新创建架构的意外更改非常有用。

 

基准线

对现有数据库进行基准测试,不包括直到及包括baselineVersion的所有迁移。

基准线

 

基准是通过将特定数据库作为基准对Flyway引入现有数据库。这将导致Migrate忽略直到基线版本(包括基线版本)的所有迁移。然后,将照常应用较新的迁移。

修理 

 

 

1.3、Migration


Flyway将每一个数据库脚本称之为:migrations,flyway支持三种类型的migration:

  1. Versioned migrations:最常用的migration,可以简单的理解为数据库升级脚本
  2. Undo migrations:数据库版本回退脚本,需要Pro版本,忽略,而且使用过程存在较大风险,undo操作目前只能通过plugin或者command-line来执行
  3. Repeatable migrations:可重复执行的migration,例如create or replace脚本,当脚本checksums改变时会重新执行

SQL:简单的SQL脚本文件,例如:

/* Single line comment */
CREATE TABLE test_user (
  name VARCHAR(25) NOT NULL,
  PRIMARY KEY(name)
);

/*
Multi-line
comment
*/
-- Placeholder
INSERT INTO ${tableName} (name) VALUES ('Mr. T');

1.4、所有的migration都需要遵守命名规范

è¿éåå¾çæè¿°

文件名由以下部分组成:

  • 前缀V用于版本控制(可配置), U用于撤消(可配置)和 R可重复迁移(可配置
  • 版本:带点或下划线的版本可根据需要分隔尽可能多的部分(不适用于可重复的迁移)
  • 分隔符:(__两个下划线)(可配置
  • 说明:下划线或空格分隔单词
  • 后缀.sql配置

可选的版本化SQL迁移也可以省略分隔符和描述。

确保版本号唯一,flyway按照版本号顺序执行。repeatable没有版本号,因为repeatable migrations会在内容改变时重复执行。

1.5、官网文档链接

根据提供的引用内容,可以得知flyway是一个数据库版本管理工具,可以帮助开发人员更好地管理数据库的版本。而flyway-mysql则是flyway针对MySQL数据库的一个插件,可以帮助开发人员更好地管理MySQL数据库的版本。 要使用flyway-mysql,需要按照以下步骤进行操作: 1. 在pom文件中添加flyway和MySQL的驱动依赖,如下所示: ```xml <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> ``` 需要注意的是,flyway的版本和spring boot的版本需要兼容,否则会出现异常。 2. 在application.properties文件中配置MySQL数据库的连接信息,如下所示: ```properties spring.datasource.url=jdbc:mysql://127.0.0.1/resty-demo?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=dev spring.datasource.password=dev1010 ``` 3. 在resources目录下创建db/migration目录,并在该目录下创建SQL脚本文件,如下所示: ```sql V1__create_user_table.sql CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); ``` 其中,V1__create_user_table.sql是一个版本号为1的SQL脚本文件,用于创建user表。 4. 在启动类上添加@EnableFlyway注解,如下所示: ```java @SpringBootApplication @EnableFlyway public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 5. 启动应用程序,flyway会自动检测db/migration目录下的SQL脚本文件,并执行其中的SQL语句,创建数据库表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值