MariaDB: MySQL, aber besser™!

Damit mir die Arbeit nicht ausgeht, stelle ich heute von MySQL auf die freie Variante namens MariaDB um. Hintergrund der Aktion: Ich wollte MariaDB schon immer mal ausprobieren, hatte aber noch keine Gelegenheit. Die wäre eigentlich schon vor ein paar Tagen da gewesen, aber… Vergessen. Dann halt jetzt!

Damit bei der Umstellung kein neu hinzugefügter Content verloren geht, stoppe ich erstmal den WordPress-Container:

Weiterlesen „MariaDB: MySQL, aber besser™!“

Verbessertes Backup

Das Backup-Skript sichert momentan zwar schon die Docker-Volumes, allerdings muss dort bei einer MySQL-Datenbank wie der von WordPress nicht unbedingt der aktuelle Stand stehen. Deshalb baue ich vor dem Aufruf des eigentlichen Backups noch den folgenden Aufruf ein:

/bin/docker exec hex_blog-wordpress-mysql_1 /bin/bash -c 'MYSQL_PWD=${MYSQL_ROOT_PASSWORD} /usr/bin/mysqldump -B wordpress --add-drop-database --single-transaction > /var/lib/mysql/wordpress-dump.sql' 2>/dev/null || true

Der Befehl lässt sich in zwei Teile zerlegen. Der äußere Teil wird direkt auf dem Server ausgeführt:

Weiterlesen „Verbessertes Backup“

Wir sind Borg!

Da sich in den letzten Tagen schon einiges an Content angesammelt hat und die Storagebox noch fast leer vor sich hin dümpelt, muss ein Backup-Mechanismus her!

Auf der Suche nach Backup-Tools stolpere ich über BorgBackup – oder kurz Borg. Schon alleine des Namens wegen bekommt es eine Chance!

Borg kann ein paar ganz nette Sachen: Deduplizierung, Komprimierung, Verschlüsselung. Außerdem ist es quelloffen, sehr gut dokumentiert, komplett auf der Kommandozeile bedienbar, und – last but not least – wird von der Storagebox von Hetzner direkt unterstützt.

Den Borg-Client werde ich NICHT in einem Docker-Container ausführen, weil er möglichst unabhängig von der restlichen Infrastruktur sein soll. Ein klassischer Cron-Job passt perfekt.

Zuerst lege ich mit borg init ein Borg-Repository auf der Storagebox an, in die anschließend per Cron-Job alle fünf Minuten die wichtigsten System-Verzeichnisse und die Docker-Volumes gesichert werden.

Als Name für die Backup-Archive verwende ich backup-{uuid4}. Der Platzhalter wird von Borg durch eine UUID ersetzt. Der Zeitpunkt des Backups ist in der Ausgabe von borg list enthalten, muss also nicht nochmal in den Archiv-Namen rein.

Im Anschluss an die Sicherung wird noch mit borg prune aufgeräumt, damit ich nicht in einem Jahr mit hunderttausend Archiven hantieren muss.

Mal sehen, wann ich das erste Backup brauche…

Customieze sucht Platz

Jetzt wo so langsam echte Daten auf dem Server anfallen, ist auch eine entsprechende Datensicherung notwendig. Die braucht natürlich Platz außerhalb des Servers.

Hetzner bietet dafür externen Speicherplatz in zwei Formen an: Backup-Speicher und Storagebox. Preislich nehmen sie sich nichts, der Backup-Speicher ist allerdings nur aus dem Hetzner-Netz direkt erreichbar. Ich entscheide mich für die Storagebox mit 100 GB, weil ich gerne auch ohne irgendwelche Tunnel von „außen“ darauf zugreifen möchte.

Auch für den Zugriff auf die Storagebox ist eine schlüsselbasierte Authentifizierung möglich. Also schnell den öffentlichen Schlüssel auf der Storagebox abgelegt und… Nichts! Warum das nicht geht, verrät das Hetzner-Wiki: Für den Zugriff mit SCP/SFTP muss der öffentliche Schlüssel im RFC4716-Format auf der Storagebox abgelegt werden. WTF?! Na wenn’s sein muss… Konvertiert. Abgelegt. Läuft.