Ein bissiges Bonmot der IT-Szene lautet: "Nobody needs backups, everybody wants restore". Der Spruch weist auf den Umstand hin, dass ein angelegtes Backup nur die halbe Miete ist, denn es muss sich im Falle eines Falles auch komplett einspielen lassen. Bei Backups von Dateien ist ein inkonsistentes Backup ja möglicherweise noch zu verschmerzen – in der Regel wird der Admin einen betriebsbereiten Zustand bei Verlust von einzelnen Dateien akzeptieren, wenn dafür der Betrieb weitergeht. Bei Datenbank-Backups ist das anders. Denn hier gilt "Alles oder nichts": Wenn sich das Backup einer Datenbank nicht vollständig einspielen lässt, ist sie unbrauchbar.
Nicht selten ist allerdings zu beobachten, dass Admins zwar Backups anlegen, den Restore-Vorgang aber nicht testen. Denn das ist aufwendig: Im schlimmsten Falle müsste der Admin ein Backup ziehen, die produktive Umgebung anhalten, das Backup einspielen und danach schauen, ob das System so läuft wie erwartet. Die wenigsten Unternehmen gehen so gründlich vor – und vertrauen darauf, dass im Ernstfall schon alles funktionieren wird.
Den Autoren von Uphold ist diese Art des Vabanquespieles zu gefährlich: Sie liefern in Form von Uphold ein Werkzeug, mit dem sich Datenbank-Backups automatisch auf ihre Restore-Fähigkeiten überprüfen lassen.
Dabei ist es den Entwicklern ein Anliegen, den Admins das Leben so leicht wie nur irgendwie möglich zu gestalten. Eben weil sich der Restore-Prozess im Betrieb praktisch nicht sinnvoll testen lässt, bietet Uphold das Komplettpaket: Docker kommt zum Einsatz, um Container mit einer frischen Datenbank anzulegen. Dann erfolgt die Wiederherstellung eines Datenbank-
Backups nach Maßgabe des Admins und im letzten Schritt spielt Uphold seine Stärke voll aus: Tests überprüfen völlig automatisch, ob nach dem Restore-Vorgang die Datenbank funktioniert. Das Programm bringt eine ganze Reihe eigener Tests mit, bietet aber auch eine User-Schnittstelle für Tests, die der Admin anlegt. Wer schon mal mit dem CI-Werkzeug Jenkins gearbeitet hat, fühlt sich sicher an viele der dort verfügbaren Funktionen erinnert.
Admins finden Uphold auf GitHub [1]. Allerdings ist es gar nicht notwendig, den Quelltext herunterzuladen. Denn die Uphold-Programmieren bieten ein fertiges Abbild eines Docker-Containers an, das sich per »docker
«
auf der Kommandozeile einfach laden lässt und das alle wichtigen Komponenten enthält. Deshalb geht es im ersten Schritt darum, die Voraussetzungen für den Uphold-Betrieb im System zu schaffen. Wer die Möglichkeit hat, startet Uphold am sinnvollsten in einer eigens zu diesem Zweck angelegten virtuellen Maschine. Das folgende Beispiel geht von einer frischen Installation von Ubuntu 16.04 aus, also der aktuellen LTS-Version von Ubuntu. Dass Uphold auf Docker setzt, stellt sich an dieser Stelle als äußerst praktisch heraus, denn Docker-Container lassen sich auch in virtuellen Maschinen problemlos nutzen – ganz im Gegensatz etwa zu geschachtelten VMs von KVM, die in vielen Fällen Probleme verursachen.
Es ist nicht kompliziert, Docker auf Ubuntu 16.04 einzurichten. Denn Docker selbst stellt passende Pakete bereit, die alle benötigten Komponenten direkt auf das System bringen. Der erste Schritt besteht darin, den GPG-Schlüssel für die Verifikation der Paketquellen des Docker-Projektes auf dem System zu hinterlegen. Der Befehl
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers. net:80 recv-keys 58118E89F3 A912897C070ADBF76221572C52609D
erledigt das. Dann lassen sich die Docker-Paketquellen aktivieren (Bild 1):
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
Der Befehl »apt-get update
«
aktualisiert danach das lokale Verzeichnis der auf den Paketservern verfügbaren Pakete. Das Kommando »apt-get install -y docker-engine
«
holt schließlich die nötigen Docker-Komponenten auf das lokale System. »systemctl status docker
«
sollte danach die Ausgabe "Active: active (running)" anzeigen – dann ist sicher, dass Docker läuft und das Starten von Docker-Containern grundsätzlich möglich ist.