18.022015

Serverumzug großer Datenbanken

Hey ihr,

der Alptraum eines jeden Sysadmin oder Softwareentwicklers, man muss eine große Datenbank auf einen anderen Server transferieren. Natürlich mit möglichst wenig bis gar keiner Downtime.

In meinem heutigen Blogeintrag will ich euch ein paar Tips&Tricks am Beispiel einer PostgreSQL Datenbank geben, einige Dinge lassen sich aber auch auf andere Datenbanken anwenden.

1. Aufräumen und entmüllen

Als Erstes wird die Datenbank nach unnötigem Datenmüll, alten Tabellen, alten Logtabellen, nicht mehr benötigten Statistiken etc. durchsucht. Beim eigenen Umzug nimmt man den Müll ja auch nicht mit :)

2. Ungenutze Indizes finden

Neben dem Transferieren der Daten nimmt das Aufbauen der Indizes am neuen Datenbankserver am Meisten Zeit in Anspruch.
Also entfernt vorher alle indizes, die nicht mehr benötigt werden.
Fuer PostgreSQL findet man hier nuetzliche Queries dafuer.

3. Statische Tabellen vorab dumpen

Um die meist noetige Downtime so gering wie moeglich zu halten, empfiehlt es sich statische Tabellen, d.h. solche, die sich bis zum Umzug nicht mehr veraendern, vorab zu dumpen.
So kann man sie schon jetzt am neuen Server einspielen und dann vor dem eigentlichen Dump aus der alten Datenbank droppen.

4. Nicht unbedingt nötige Tabellen nachziehen

Vielleicht habt ihr in eurer Anwendung ein paar Tabellen, auf die ihr vorerst verzichten koennt.
Bspw. Statistiken, Administrationsbereich etc. diese Tabellen kann man auch noch nach dem Umzug dumpen und einspielen, auch das verkuerzt die Downtime.

5. Replikation!

Hiermit kann man sich u.U alle vorherigen Steps sparen!
Sofern es die Datenabank und eure Serverumgebung unterstützt, ist Replikation das Schlüsselwort!
Ihr richtet den neuen Datenbankserver einfach als Replikat des alten Servers ein.
Sobald die Server den gleichen Stand haben, faehrt man beide Server herunter, macht den neuen Server vom Slave zum Master und sorgt dafür, dass die Anwendung mit dem neuen DB-Server "spricht". Fertig!
Somit lässt sich die Downtime auf wenige Sekunden reduzieren. Leider ist diese Methode nicht immer möglich,
da sie bspw. bestimmte Rechte auf den Datenbankservern voraussetzt.

Aber auch mit den Steps 1-4 kann man die Ausfallzeit bei einem Umzug deutlich reduzieren!

Gruß
Sebastian