Datenbank-Backups aus der Open Telekom Cloud als Docker-Container bereitstellen

Wir haben eine einfache Lösung entwickelt, um lokal auf die Daten in einem RDS-Backup zuzugreifen...

In den letzten Monaten haben wir unsere komplette Anwendungslandschaft von einer selbstbetriebenen, georedundanten Openstack-Plattform in die Open Telekom Cloud migriert. Als Circle Partner setzen wir seitdem sowohl für unsere eigenen Anwendungen als auch für unsere Kunden und deren von uns betriebenen Applikationen auf die Open Telekom Cloud.

Neben der Cloud Container Engine, welche die effiziente Bereitstellung von Infrastrukturressourcen bietet, nutzen wir den Relational Database Service (RDS) sehr intensiv. Nahezu jede Applikation braucht eine Datenbank und durch RDS wird das Management von Datenbanken einfacher denn je. Dies gilt natürlich auch für Datenbank-Backups.

In der Open Telekom Cloud werden Datenbank-Backups von RDS mittels Percona XtraBackup und qpress erzeugt. Das Backup ist also kein SQL-Dump, den man hier vielleicht erwarten würde, sondern eine exakte Kopie der Binärdaten der eigentlichen MySQL Daten. Dies bedeutet, dass man zwar ein exaktes Abbild der Datenbank erhält, dieses aber in eine Instanz mit der gleichen MySQL-Version und allen spezifischen Einstellungen zurückspielen muss. RDS bietet eine einfache und bequeme Möglichkeit, das Backup in einer neuen RDS-Instanz zurückzuspielen und somit eine Kopie der Datenbank zu erhalten. Dies kann nützlich und notwendig sein, wenn man sich für den Datenbestand zu einem bestimmten Zeitpunkt interessiert, wenn beispielsweise in der Vergangenheit etwas unbeabsichtigt gelöscht wurde aber bereits neue Daten hinzugekommen sind. Dann wird es nötig, nur einen Teil der im Backup befindlichen Daten zu extrahieren und wieder in die produktive Datenbank zu übernehmen.

Um dies zu erreichen wäre der Weg über eine Datenbank-Kopie als neue RDS-Instanz in der Open Telekom Cloud zwar möglich, aber mit Aufwand und Kosten verbunden. Um hier einfacher und ohne Kostenaufwand an die Daten in dem RDS-Backup zu kommen, haben wir den „OTC RDS Backup Extractor“ geschrieben. Damit lässt sich automatisiert ein RDS-Backup als Docker-Container bereitstellen und man erhält die Möglichkeit, lokal auf die Daten zuzugreifen. Weiterhin kann im Dockerfile die MySQL Version angegeben und weitere spezifische Einstellungen (z. B. SqlMode, Lowercase Tablenames, etc.) vorgenommen werden, um diese exakt an die Instanz anzupassen, aus der das Backup gezogen wurde.

Die Nutzung ist denkbar einfach. Zunächst wird aus dem Dockerfile ein neues Image erzeugt. Die benötigten Pakete für Percona XtraBackup und qpress werden dabei automatisch aus den entsprechenden Repositories heruntergeladen:

docker build -t otc-rds-extractor .

Anschließend wird ein neuer Docker-Container mit dem zuvor erzeugten Image gestartet, das RDS-Backup automatisch dekomprimiert und als lokale MySQL Datenbank zur Verfügung gestellt:

docker run -v $(pwd)/backup.qp:/backup.qp -p 3306:3306 otc-rds-extractor

Danach kann auf die Datenbank mit den ursprünglichen Zugangsdaten unter 127.0.0.1 zugegriffen werden:

mysql -u <user> -p -h 127.0.0.1

Den „OTC RDS Backup Extractor“ stellen wir kostenlos auf GitHub bereit. Anbei ein Link zum entsprechenden Repository: https://github.com/TWENTY-20/otc-rds-backup-extractor

zurück zur Übersicht

twenty20 GmbH & Co. KG

Hausinger Straße 6
40764 Langenfeld
+49 (0) 2173 167 00 50