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.