flyway使用教程

flyway

什么是flyway

flyway是一个数据库迁移工具.使用version来记录每一次脚本的执行.

使用场景

主要是用来记录每次迭代的版本sql的表结构的变动.在部署某个版本时,能够快找到这个版本对应的sql,避免出现表结构的错误

如图

image.png

例如

  • v0.1版本有v1-v6的sql

  • v0.2版本有v7-v17的sql

  • 如果用户选择部署v0.1的版本,那么就能找到对应的初始化sql(v1-v6)

  • 如果用户选择部署v0.2的版本,那么就能找到对应的初始化sql(v1-v17)

  • 如果用户选择从0.1升级到0.2版本,那么就能找到对应的初始化sql(v7-v17)

如何使用

flyway提供了以下方式来使用

  • Command-line
  • Java API
  • Maven
  • Gradle

如果不想入侵到代码中.可以使用 flyway command line工具.这里主要以command line 版本号为5.1.4做例子.

下载地址

官网地址

  • https://flywaydb.org/download/thankyou?dl=https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/5.1.4/flyway-commandline-5.1.4-windows-x64.zip

目录结构

解压的目录如下

image.png

如何使用

配置

  • 进入conf
  • 编辑flyway.conf
image.png
  • 修改如下配置
    • flyway.driver= com.mysql.jdbc.Driver
    • flyway.user= root

    (注:自己的数据库用户名)

    • flyway.password= root

    (注:自己的数据库密码)

    • flyway.url= jdbc:mysql://ip:port/xxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false

    (注:自己的数据库url)

image.png

放入需要执行的脚本

  • 把脚本放入sql目录下

能够执行sql目录及其目录以下的所有脚本

image.png
image.png

如何执行

  • 找到目录下的 flyway命令


    image.png
  • 输入命令 flyway info.检查是否连接成功

image.png
  • 输入命令 flyway migrate执行sql操作

$ sh flyway migrate
Flyway Community Edition 5.1.4 by Boxfuse

Database: jdbc:mysql://ip:port/xxx (MySQL 5.7)
Successfully validated 363 migrations (execution time 00:04.195s)
Current version of schema `xxx`: 0000367
Schema `xx` is up to date. No migration necessary.

最后数据有张表默认是flyway_schema_history记录了flyway的version.

image.png

如何在已存在的库中使用

如果库中已经存在数据,是无法直接使用flyway命令的

  • 执行 flyway baseline 命令.然后再根据上面的步骤执行

flyway的运行原理

主要是通过对比flyway_schema_history表中 versionchecksum.来判断文件是否存在与被修改过.来执行版本控制的.

参考文档

  • https://flywaydb.org/documentation/

END

你可能感兴趣的:(flyway使用教程)