DEV Community

Emilien Mamalet for Onepoint

Posted on

Ne jouez plus tout l'historique de vos migrations Flyway grâce au baseline !

Ne perdez plus votre temps !

Votre projet a plusieurs années derrière lui, il a évolué, et votre base de données n'est plus la même qu'à l'origine ? Il est temps de s'intéresser à la fonctionnalité Baseline de Flyway.

Qu'est-ce que le baseline ?

Le Baseline de Flyway est une opération qui permet de marquer une base de données comme étant dans un certain état initial (baseline version).

Une fois la migration effectuée, le Baseline crée une entrée dans la table de suivi des migrations de Flyway (flyway_schema_history), indiquant que toutes les migrations antérieures à la version spécifiée sont considérées comme déjà appliquées.

Quand utiliser le baseline ?

  • Migration d'une base de données existante : Vous avez une base de données déjà en production sans historique de migrations, et vous souhaitez commencer à utiliser Flyway.
  • Standardisation d'un processus de migration : Vous voulez aligner toutes les bases de données déployées à différentes étapes sur un point de départ commun.
  • Gagner un peu de temps : Vous souhaitez éviter que Flyway rejoue tout l'historique de vos migrations car seul l'état final vous intéresse.

Création de votre baseline

Générer un fichier SQL contenant l’état final de votre base de données

Commencer par générer un fichier SQL reflétant l’état final de votre base de données.
Chaque SGBD offre un outil permettant d'exporter vos données (DDL et DML).

En ligne de commande avec PostgreSQL:
pg_dump.exe" --file=C:\Dump\localhost-2024_12_13_17_53_48-dump.sql --inserts --username=votre_username --host=localhost --port=5432

Avec votre IDE préféré :
Image description

Renommer le fichier généré au format compatible avec Flyway

Renommez le fichier en respectant le Flyway Naming Patterns. Dans le cas d’un Baseline, le préfixe utilisé est B (pour Baseline). Par exemple, pour une version 2.0.0, le fichier devra être nommé :
B2.0.0__Mon_Script_Baseline.sql

Vérifier la version du plugin flyway-core

Assurez-vous d’utiliser une version récente du plugin flyway-core. En effet, le support du préfixe de Baseline n’était pas disponible dans les anciennes versions du plugin communautaire open-source (voir l’issue : https://github.com/flyway/flyway/issues/3707).

Depuis la version 10.0.x, le préfixe de Baseline est pleinement pris en charge. Nous vous recommandons donc d’utiliser la dernière version disponible.

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>10.22.0</version>
</dependency>
Enter fullscreen mode Exit fullscreen mode

Un petit peu de conf

Dans le application.yml de votre module flyway, ajoutez ces deux lignes :

flyway:
    baseline-on-migrate: true
    baseline-version: 2.0.0
Enter fullscreen mode Exit fullscreen mode

⚠️ La version du baseline doit être supérieure au dernier script joué par Flyway.

⭐ Félicitations, la configuration est opérationnelle ! Lors de l'exécution des migrations Flyway, seuls les scripts ayant une version supérieure à celle définie par la baseline seront appliqués. Si vous travaillez avec une base de données vierge, tous les scripts antérieurs à la baseline seront ignorés.

Top comments (0)