Eine Datenbank-Migration beim Deployment ist die Änderung der Datenbankstruktur, die mit einem neuen Stand ausgeliefert wird. Sie steht als Datei im Repository und läuft als Schritt im Ausrollen.
- Datenbank-Migration beim Deployment
Die Änderung der Datenbankstruktur, die mit einem neuen Stand ausgeliefert wird.
Beispiel: „Die Datenbank-Migration beim Deployment legte eine Spalte an und füllte sie in einem zweiten Schritt.“Jede Migration trägt einen Zeitstempel im Dateinamen, und die Datenbank merkt sich, welche gelaufen sind. Daraus ergibt sich eine feste Reihenfolge, die auf jeder Umgebung gleich ist.
Abgrenzung zur Datenwanderung: Diese schiebt Inhalte von einem System ins andere. Hier geht es um die Struktur der Tabellen.
Wie eine Datenbank-Migration beim Deployment abläuft
Als eigener Schritt zwischen Bauen und Umschalten. Das Skript ruft die Migration ohne Rückfrage auf, die Datenbank führt die offenen Dateien in Reihenfolge aus, und erst danach zeigt der Verweis auf den neuen Stand.
Davor gehört eine Sicherung, die sich auch zurückholen lässt. Eine Migration ist der einzige Schritt im Ausrollen, den ein Rollback nicht mitnimmt, siehe Rollback.
Warum Migrationen abwärtskompatibel sein müssen
Weil der alte Code für Sekunden noch läuft. Während des Umschaltens greifen beide Stände auf dieselbe Datenbank zu; eine umbenannte oder gelöschte Spalte bricht in diesem Moment die laufende Website.
Deshalb wird in zwei Releases geändert: erst die neue Spalte anlegen und beide bedienen, nach dem Ausrollen die Daten übertragen, im nächsten Release die alte entfernen. Drei Schritte statt einem, dafür ohne Pause.
Was bei großen Tabellen zu beachten ist
Die Sperre. Eine Änderung an einer Tabelle mit Millionen Zeilen hält diese Tabelle unter Umständen minutenlang, und in dieser Zeit wartet jede Anfrage, die sie braucht; aus dem Ausrollen ohne Pause wird eine Pause.
Der Weg führt über Werkzeuge, die die Tabelle im Hintergrund umkopieren, oder über ein angekündigtes Fenster. Entschieden wird das vorher und nicht, wenn die Website steht, siehe Wartungsfenster.