zoukankan      html  css  js  c++  java
  • flyway使用简介

    官网

    https://flywaydb.org/

    背景

    Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。

    流程

    1、 首先配置好flyway的基本信息后,运行项目,会在数据库表中默认新建一个数据表用于存储flyway的运行信息,默认的数据库名:flyway_schema_history

    2、 紧接着Flyway将开始扫描文件系统或应用程序的类路径进行迁移。然后,Flyway的数据迁移将基于对用sql脚本的版本号进行排序,并按顺序应用:

    可以看到执行数据库表后在checksum中储存一个数值,用于在之后运行过程中对比sql文件执行是否有变化。

    注意:

    flyway在执行脚本时,会在源数据表中检查checksum值,并确定上次运行到哪一个脚本文件,本次执行时从下一条脚本文件开始执行。所以编写脚本的时候不要去修改原有的脚本内容,并且新的脚本版本号要连续

    集成SpringBoot

    1.添加依赖

    <dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>5.1.1</version>
    </dependency>
    
    添加插件:
    <plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>5.1.1</version>
    </plugin>
    

    2.命名规范
    sql 脚本存放目录:src/main/resources/db/migration
    对应一个程序版本的多个脚本,从1开始,比如1.0.9版本,有多个任务:张三负责a任务(tapd号为1111111),李四负责b任务(tapd号为222222),他们的任务都涉及到db更新他们会分别创建两个脚本:
    V1.0.9.0.1__1111111.sql
    V1.0.9.0.2__222222.sql
    说明:V大写,中间是两个下划线(__)

    常见问题

    1、可以基于环境变量,实现不同的环境,做不同的初始化脚本吗?
     基于我们的配置中 心,可以对flyway.locations配置进行修改,不同环境的初始化脚本可以放到不同的目录下。

    2、初始化数据过程会发生错误回滚?
     每 一个sql 文件会有 一个单独的事物,如果单个文件中发 生错误,单个文件的操作会回滚, 比如有1、2、3个 文件,第 二个文件发生错误,第二个文件所有操作将会回滚,第三个文件不会执行。但: Unfortunately, today only DB2, PostgreSQL, Derby, EnterpriseDB and to a certain extent SQL Server support DDL statements  inside a transaction。 所以,建议不要把ddl 文件和dml语句句放到同 一个文件 里,避免不必要的麻烦。

    3、多个节点能够并行执行migration吗?
     当然可以!Flyway使用数据库锁机制(locking technology of your database)来协调多个节点,从而保证多套应用程序可同时执行migration,而且集群控制也可做配置。

  • 相关阅读:
    webpack配置模块的查找范围
    webpack中resolve用法
    C语言中的字符串
    bash通配符与特殊符号
    求两个字符串的最大公共子串
    linux内核编译
    数据库中使用索引来提高查询的速度
    数据库中的主键与外键
    Linux学习——命令3
    Linux学习——命令2
  • 原文地址:https://www.cnblogs.com/liuyupen/p/11101594.html
Copyright © 2011-2022 走看看