¿Que es FlayWay?¿Para que sirve?

Es una herramienta open-source para versionar y migrar  base de datos.

Es una herramienta muy sencilla de usar que puede usars desde línea de comandos, desde su API Java, o desde Maven y Graddle.

 

Además ofrece Plugins para herramientas como Spring Boot, Grails, Paly, SBT, Grunt,…

Soporta un gran número de bases de datos: Oracle, SQL Server (including Amazon RDS and Azure SQL Database, DB2, MySQL (including Amazon RDS, Azure Database & Google Cloud SQL), MariaDB, PostgreSQL (including Amazon RDS, Azure Database, Google Cloud SQL & Heroku),Redshift, CockroachDB, SAP HANA, Sybase ASE, H2, HSQLDB, Derby and SQLite.

Sus comandos son: Migrate, Clean, Info, Validate, Undo, Baseline and Repair.

Este tutorial explica como versionar y desplegar  un esquema de base de datos usando Flyway con Maven.

Integrar a Maven – Edición del pom.xml

Agregar en el ‘pom.xml’ del proyecto en el build el plugin de Flyway:

pom.xml

...

<build>
      <finalName>web</finalName>
      <plugins>
          <plugin>
              <groupId>org.flywaydb</groupId>
              <artifactId>flyway-maven-plugin</artifactId>
              <version>4.2.0</version>
              <configuration>
                  <configFile>flyway.properties</configFile>
              </configuration>
              <dependencies>
                  <dependency>
                      <groupId>org.postgresql</groupId>
                      <artifactId>postgresql</artifactId>
                         <version>9.4.1208.jre7</version>
                  </dependency>
              </dependencies>
          </plugin>
      </plugins>
   </build>
...

Versionamiento de los script SQL

FlayWay posee una estructura definida para el versionamiento de los script SQL, esta estructura es la siguiente:

Vnumero__descripcion.sql

Los script SQL deben colocarse en: ‘flyway/sql’

El arbol de archivo quedaría de la siguiente forma:

flyway/sql
├── V1_1__init.sql
├── V1_2__add_precio_to_libro.sql
└── V1_3__add_descrip_to_libro.sql

Configuración de Flyway

En la raíz del proyecto crea un archivo llamado flyway.properties el cual contendra los datos de la Base de Datos en donde se quieren aplicar los cambios con FlyWay.

flyway.properties

 

flyway.user=centos
flyway.password=as123456
flyway.schemas=public
flyway.locations=filesystem:./flyway/sql
flyway.url=jdbc:postgresql://$HOST2:5432/$ESQUEMA
flyway.sqlMigrationPrefix=V
flyway.sqlMigrationSuffix=.sql
flyway.sqlMigrationSeparator=__
flyway.validateOnMigrate=true

Desplegar DB

Luego de configurar el pom.xml se debe ejecutar el siguiente comando:

mvn flyway:migrate

Nota: Si la base de datos no está limpia se recomienda.

  • Respaldar el schema actual
  • realizar un mvn flyway:clean
  • realizar un mvn flyway:migrate

Registro del versionamiento

El versionamiento del esquema inicial y sus modificaciones queda en una tabla llamada schema_version.


Esta tabla se crea automáticamente y se va completando a medida que se van realizando modificaciones en el esquema por medio de Flyway.

Flyway valida la integridad de los SQL por medio de un hash MD5 que se realza sobre los archivos SQL versionados, por ende las modificaciones deben realizarse en un nuevo archivo SQL que debe seguir la nomenclatura de versionamiento antes mencionada.

Referencias