Checkliste Serverumzug

Der große Tag

Die Spannung steigt

Bevor es tatsächlich los geht, stellt ihr 24 – 48 Stunden vorher die TTL eurer DNS-Einträge auf 10 Minuten. Von dieser TTL wird es abhängen wie schnell Anfragen an eure Domain auf den neuen Servern landen.

Letzte Vorbereitungen

Wir gehen mal davon aus, dass ihr die neuste Version ausgerollt habt und eure QA zufrieden mit der Seite ist.

Wenn ihr einen Suchindex betriebt (Apache Solr, …), wollt ihr hier möglicherweise noch die neuesten Änderungen einspielen. Dazu benötigt ihr aber einen frischen Datendump. Hier müsst ihr Aufwand gegen einige veraltete Suchergebnisse abwägen.

  • Startet einen Cronjob, der jede Minute eure Benutzer-Inhalte synchronisiert (rsync aus Schritt 6).
  • Leert die Datenbank vollständig – DROP auf alle Tabellen (oder einfach die ganze DB. Dann aber direkt neu anlegen mit den gleichen Berechtigungen für den User!)
  • Spielt ein frisches Schema ein
  • Erhöht die Auto-Inkrements für alle Tabellen, die ihr beim Datendump auslasst großzügig. So könnt ihr sie später, wenn die Seite bereits wieder live ist, nachziehen, ohne dass es Konflikte gibt.
  • Sämtliche Caches löschen (Memcache, Files, Redis, …)
  • Alle Cronjobs abschalten

Showtime!

Schreibzugriffe auf die Datenbank abschalten

Ihr müsst sicher verhindern, dass sich eure Daten ändern, während ihr den Dump zieht. Die alte Datenbank könnt ihr hierfür mit --read-only starten und somit die alte Seite weiter laufen lassen.

Die neue DB wollt ihr gleich selbst beschreiben. Lese-Modus ist also keine Option. Außerdem sieht eure Seite so ganz ohne Daten wohl auch etwas seltsam aus. Die neue Seite ist also im Wartungsmodus. Einfach eine kleine wartung.html per .htaccess mit HTTP-Status-Code 503 ausliefern.

Parallel: DNS umstellen

Da ihr das hoffentlich nicht alles alleine machen müsst, stellt eine Kollegin parallel den DNS eurer Domain auf die neuen Server um; gleich wieder mit der langen TTL, ein Zurück gibt es jetzt nicht mehr.

Datenbank kopieren

Datenbank-Dumps haben wir ja jetzt schon ein paar mal geübt, der hier zählt. Daumen drücken und Kaffee holen.

Wartungsmodus aus, Seite geht live

Ihr testet noch einmal die wichtigsten Sachen und dass die Daten heil angekommen sind (Ausnahme vom Wartungsmodus für eure IP in der .htaccess), dann geht ihr live.

Die heiße Phase

Der Kaffee von oben ist besser schon leer, sonst wird er jetzt kalt. Irgendwas ist immer! Ruhig bleiben, sind nur Kleinigkeiten.

Aftermath

  • Die alten Seite könnt ihr jetzt abschalten.
  • Cronjob mit rsync kann aus
  • Holt euch die ausgelassenen Tabellen von der alten DB und spielt sie ein
  • Falls ihr einen Suchindex verwendet (Apache Solr, Elasticsearch, …), aktualisiert ihr den jetzt. Das ist nur ein Update und sollte nicht viel beinhalten.
  • Auf den neuen Servern könnt ihr jetzt eure Cronjobs wieder aktivieren

Abschließend übersichtlich als Checkliste