• Flyway客户端使用


    一、flyway介绍

      Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command LineJava API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。

      Flyway主要基于6种基本命令:Migrate, Clean, Info, Validate, Baseline and Repair

      目前支持的数据库主要有:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix.

    二、客户端使用说明

    2.1客户端相关文件介绍

    解压flyway-commandline-4.1.2-windows-x64.zip打开flyway-4.1.2目录

    conf:主要存放一些数据库的配置文件,常见的配置有

    flyway.url=jdbc:oracle:thin:@192.168.10.222:1521:orcl    ----数据库url+数据库名

    flyway.user=gams0308    ----数据库用户名

    flyway.password=bs       ----数据库密码

    drivers:数据库连接驱动,若出现以下错误,则把对应的数据库驱动放在这个文件夹下 

    jarsjreflyway相关java运行环境可以不用操作

    libflyway相关jar

    重点关注sql文件夹,这里头存放flyway要执行的脚本。

    脚本命名规则: 

     

    1、前缀(可配置,默认值:V

    2、版本(以点或下划线区分开来)

    3、分隔符(两个下划线)

    4、描述(下划线或空格分开)

    5、后缀(可配置,默认情况下:SQL

    2.2 Flyway常用的命令介绍

    命令一:Migrate

    Migrate是指把数据库Schema迁移到最新版本,是Flyway工作流的核心功能,FlywayMigrate时会检查Metadata(元数据)表,如果不存在会创建Metadata表,Metadata表主要用于记录版本变更历史以及Checksum之类的。

    结合客户端理解:

    执行sql文件夹中未执行的sql,将sql版本更到最新。

    命令二:Clean

    Clean相对比较容易理解,即清除掉对应数据库Schema中的所有对象,包括表结构,视图,存储过程,函数以及所有的数据等都会被清除。

    Clean操作在开发和测试阶段是非常有用的,它能够帮助快速有效地更新和重新生成数据库表结构,

    特别注意:在生产环境上禁止使用该命令,使用不当将删除所有生产数据表!

    结合客户端理解:

    删除制定数据库里头的所有表。

    命令三:Info

    Info用于打印所有Migrations的详细和状态信息,其实也是通过Metadata表和Migrations完成的,下图很好地示意了Info打印出来的信息。

    Info能够帮助快速定位当前的数据库版本,以及查看执行成功和失败的Migrations

    结合客户端理解:

    输入所有flyway执行过的信息。

    命令四:Validate

    Validate是指验证已经ApplyMigrations是否有变更,Flyway是默认是开启验证的。

    Validate原理是对比Metadata表与本地MigrationsChecksum值,如果值相同则验证通过,否则验证失败,从而可以防止对已经Apply到数据库的本地Migrations的无意修改。

    结合客户端理解:

    校验schema_version表的执行情况

    命令五:Baseline

    Baseline针对已经存在Schema结构的数据库的一种解决方案,即实现在非空数据库中新建Metadata表,并把Migrations应用到该数据库。

    Baseline可以应用到特定的版本,这样在已有表结构的数据库中也可以实现添加Metadata表,从而利用Flyway进行新Migrations的管理了。

    结合客户端理解:

    设定schema_version表的基线执行版本。

    命令六:Repair

    Repair操作能够修复Metadata表,该操作在Metadata表出现错误时是非常有用的。

    Repair会修复Metadata表的错误,通常有两种用途:

    移除失败的Migration记录,该问题只是针对不支持DDL事务的数据库。

    重新调整已经应用的MigratonsChecksums值,比如:某个Migratinon已经被应用,但本地进行了修改,又期望重新应用并调整Checksum值,不过尽量不要这样操作,否则可能造成其它环境失败。

    结合客户端理解:

    删除schema_version表里头失败的记录。

    三、常用操作

    3.1 首先配置cof文件夹里头的flyway.conf文件,制定数据库以及用户名密码: 

    例如: 

    3.2 将要执行sql放到sql文件夹中,若脚本有执行顺序的话,先执行的命名排前。 

    3.3 右键shift+鼠标右键,打开控制台。 

    3.4 flyway migrate执行数据库更新操作。

    第一次执行flyway migrate可能会报以下错误 

      数据要先指定基线版本,先执行flyway baseline,这时候在对应的数据库里头创建一张版本更新表:schema_version然后再执行flyway migrate特别注意执行flyway baseline后脚本最低版本要从2开始。另外注意:由于flyway创建schema_version表时候,多了””,所以查询数据库要加””,例如:select t.* from "schema_version" t; 

    3.5 flyway info输出操作记录信息。 

    3.6 若执行脚本报错,比如数据表id要求唯一,这时候执行flyway migrate会报错。 

    schema_version表里头最新的一个脚本的success字段就会为0,代表失败。

    修改对应的脚本,flyway repair删除错误记录,然后再执行flyway migrate就可以了。

    3.7 flyway baseline设定flyway基线。

    在未执行flyway migrate之前,可以执行该命令,否则执行报错。 

    作者:shawWey
    出处: https://www.cnblogs.com/shawWey/
    要相信所有的事情都会过去的,只是以什么样的方式,什么样的结果结束而已,保持平常心,做你该做的。
  • 相关阅读:
    数学形态学——腐蚀、膨胀、开、闭、细化
    VS2010中 报错:error C2146、error C4430 原因一:缺少CvvImage类
    帧同步和状态同步
    HTML5触摸事件演化tap事件
    screenX clientX pageX的区别
    phaser的小游戏的onInputDown问题
    phaser入手
    pixi.js 微信小游戏 入手
    正则表达式
    剖析Vue原理&实现双向绑定MVVM-2
  • 原文地址:https://www.cnblogs.com/shawWey/p/6602587.html
Copyright © 2020-2023  润新知