Automatisierte Datenbank-Migrationen mit Goose

Für einen Kunden mit einem MySQL/MariaDB-Cluster implementierte ich ein modernes Migrationssystem, das manuelle Datenbankänderungen durch automatisierte, nachvollziehbare Migrationen ersetzt.

Ausgangssituation

Der Kunde betrieb vier Datenbanken auf zwei Servern (Produktiv- und Testumgebung). Strukturänderungen wurden manuell durch direktes Einspielen von SQL-Skripten vorgenommen – ohne systematische Versionskontrolle oder automatische Nachverfolgung.

Um herauszufinden, welche Änderungen in welcher Datenbank bereits angewendet waren, musste der zuständige Mitarbeiter die Datenbankstruktur manuell prüfen. Dieser Prozess war fehleranfällig, zeitaufwändig und erschwerte die Synchronisation zwischen Test- und Produktivumgebung erheblich.

Die Lösung mit Goose

Durch die Einführung von Goose als Migrations-Framework weiß nun jede Datenbank selbst, welche Migrationen bereits angewendet wurden und welche noch ausstehen:

  • Versionierte Migrationen: Alle Strukturänderungen werden als nummerierte SQL-Migrationsskripte verwaltet und in Git versioniert
  • Automatische Statusverfolgung: Goose protokolliert in einer dedizierten Tabelle, welche Migrationen bereits durchgeführt wurden
  • Einheitliche Skriptbasis: Test- und Produktivserver nutzen den identischen Bestand an Migrationsskripten
  • Benutzerfreundliche Automatisierung: PowerShell-Wrapper-Skripte ermöglichen die einfache Ausführung über die Kommandozeile

Besonderer Fokus: Einfache Bedienung

Damit die Mitarbeiter beim Kunden keine tiefgreifenden technischen Kenntnisse besitzen müssen, wurden die PowerShell-Skripte bewusst so gestaltet, dass Datenbank-Updates mit einfachen Befehlen sicher und zuverlässig durchgeführt werden können.

Ergebnis

Das neue System eliminiert manuelle Fehlerquellen, schafft vollständige Transparenz über den Zustand jeder Datenbank und ermöglicht schnelle, reproduzierbare Deployments – ohne dass tiefes Datenbank-Know-how erforderlich ist.