Flyway简介
Flyway 是一个开源的数据库版本控制工具,用于管理和跟踪数据库模式的变更历史。它提供了一种自动化的方式来执行数据库迁移脚本,确保各环境数据库状态的一致性。Flyway 支持多种常见的数据库平台,并可以与版本控制系统集成,是一个功能强大且易于使用的数据库模式管理解决方案。
Flyway使用场景
数据库模式管理: Flyway主要用于管理数据库模式的变更和迁移。它能够跟踪数据库的变更历史,确保数据库状态的一致性。
应用部署和发布: 在应用程序部署或发布时,Flyway可以确保数据库模式与应用程序代码保持同步,避免出现不兼容的情况。
多环境管理: Flyway可以在不同的环境(如开发、测试、生产)中执行相同的迁移脚本,确保各环境的数据库状态一致。
团队协作: Flyway通过版本化的迁移脚本,使得团队成员能够更好地协作和管理数据库变更。
使用Flyway的好处
自动化: Flyway提供了一种自动化的数据库模式管理方式,减少了手动执行SQL脚本的风险和工作量。
可重复性: Flyway确保迁移脚本可重复执行,避免因手动执行导致的失败和数据库状态不一致。
可跟踪性: Flyway会记录已执行的迁移脚本,方便开发人员了解数据库的变更历史。
多平台支持: Flyway支持多种数据库平台,如MySQL、PostgreSQL、Oracle、SQL Server等,提高了跨平台的适用性。
版本控制集成: Flyway可以与常见的版本控制系统(如Git)集成,使得数据库模式变更可以与代码变更一起进行版本控制。
事务支持: Flyway的迁移脚本是事务性的,即要么全部成功,要么全部回滚,确保数据库状态的一致性。
Flyway迁移脚本
版本化迁移(Versioned Migrations):
命名规则: V{version}__[description].sql
示例: V1__create_users_table.sql
执行过程:
Flyway 会按照版本号的顺序(V1, V2, V3...)执行这些脚本。
每个版本的脚本只会被执行一次,Flyway会记录已经执行过的版本。
如果某个版本的脚本已经被执行过,Flyway不会再次执行该脚本。
如果需要修改数据库结构,通常使用这种类型的迁移脚本。
撤消迁移(Undo Migrations):
命名规则: U{version}__[description].sql
示例: U1__drop_users_table.sql
执行过程:
Flyway 会按照版本号的倒序(Un, Un-1, Un-2...)执行这些脚本。
撤消迁移用于撤销之前的版本化迁移。
在某些情况下,如果需要回滚数据库到之前的状态,可以使用这种类型的迁移脚本。
可重复迁移(Repeatable Migrations):
命名规则: R__[description].sql
示例: R__create_views.sql
执行过程:
Flyway 会在每次迁移时都执行这些脚本。
可重复迁移通常用于创建数据库视图、存储过程或触发器等对象。
这些对象不会被版本控制,因为它们需要在每次迁移时都被重新创建。





