深入浅析java中flyway使用简介
此命令会自动检查数据库脚本是否有变化,如果有变化,则执行脚本,更新数据库版本,如果数据库初始状态是空库,则会自动创建schema_version 表,用于存储数据库操作的版本记录,
Validate是指验证已经Apply的Migrations是否有变更,Flyway是默认是开启验证的。
Repair会修复Metadata表的错误,通常有两种用途:
1、移除失败的Migration记录,该问题只是针对不支持DDL事务的数据库。
2、重新调整已经应用的Migratons的Checksums值,比如:某个Migratinon已经被应用,但本地进行了修改,又期望重新应用并调整Checksum值,不过尽量不要这样操作,否则可能造成其它环境失败。
Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持CommandLine和JavaAPI,还支持Build构建工具和SpringBoot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。
Flyway主要基于6种基本命令:
Migrate, Clean, Info, Validate, Baseline and Repair,稍候会逐一分析讲解。
目前支持的数据库主要有:
Oracle,SQLServer,SQLAzure,DB2,DB2z/OS,MySQL(includingAmazonRDS),MariaDB,GoogleCloudSQL,PostgreSQL(includingAmazonRDSandHeroku),Redshift,Vertica,H2,Hsql,Derby,SQLite,SAPHANA,solidDB,SybaseASEandPhoenix.
补充:下面再给大家介绍下flyway使用简介
官网
https://flywaydb.org/
背景
Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。
流程
1、首先配置好flyway的基本信息后,运行项目,会在数据库表中默认新建一个数据表用于存储flyway的运行信息,默认的数据库名:flyway_schema_history
2、紧接着Flyway将开始扫描文件系统或应用程序的类路径进行迁移。然后,Flyway的数据迁移将基于对用sql脚本的版本号进行排序,并按顺序应用:
可以看到执行数据库表后在checksum中储存一个数值,用于在之后运行过程中对比sql文件执行是否有变化。
注意:
flyway在执行脚本时,会在源数据表中检查checksum值,并确定上次运行到哪一个脚本文件,本次执行时从下一条脚本文件开始执行。所以编写脚本的时候不要去修改原有的脚本内容,并且新的脚本版本号要连续
集成SpringBoot
1.添加依赖
添加插件: org.flywaydb flyway-core 5.1.1 org.flywaydb flyway-maven-plugin 5.1.1
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,todayonlyDB2,PostgreSQL,Derby,EnterpriseDBandtoacertainextentSQLServersupportDDLstatements insideatransaction。所以,建议不要把ddl文件和dml语句句放到同一个文件里,避免不必要的麻烦。
3、多个节点能够并行执行migration吗?
当然可以!Flyway使用数据库锁机制(lockingtechnologyofyourdatabase)来协调多个节点,从而保证多套应用程序可同时执行migration,而且集群控制也可做配置。
到此这篇关于flyway使用简介的文章就介绍到这了,更多相关flyway使用简介内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!