Schema-Migrationen ohne Ausfallzeit
Das Problem
Während einer Veröffentlichung laufen zwei Codeversionen zusammen. Eine Migration, die eine Spalte auf einmal ändert, bricht eine davon. Also wird jede strukturelle Änderung in eine Folge von Schritten zerlegt, von denen jeder für sich sicher ist.
Die sichere Folge
Hinzufügen. Eine neue Spalte, leer erlaubt, ohne die bestehende zu berühren.
Doppelt schreiben. Der Code schreibt in beide Spalten und liest bevorzugt aus der alten.
Nachfüllen. In kleinen Chargen, außerhalb der Spitzenzeiten, mit Stoppmöglichkeit.
Lesen umschalten. Nach Prüfung, dass die Daten identisch sind.
Entfernen. In einer separaten Veröffentlichung, nachdem Sie bestätigt haben, dass niemand liest.
Vorsichtsregeln
Eine Migration auf einer großen Tabelle kann sperren. Prüfen Sie das Sperrverhalten in Ihrer Engine und führen Sie sie auf einer Kopie in Produktionsgröße aus. Eine Sicherung davor und ein im Voraus geschriebenes Rücknahmeskript — nicht unter Druck improvisiert.
Im Detail
Verwalten Sie Migrationen als Code in der Versionskontrolle, mit automatischer Ausführung und Reihenfolgesteuerung. Und vermischen Sie eine Schemaänderung nicht mit einer Logikänderung in derselben Veröffentlichung: Wenn etwas bricht, wollen Sie wissen, welches der beiden schuld ist.