StaticFloat

MariaDB Backup auf Synology NAS

Ich programmiere zugegebener maßen viel und vor allen Dingen auch echt gerne. Ansonsten würde ich wahrscheinlich auch nicht so viel Zeit vor dem PC verbringen. So programmiere ich neben meinem Studium gerade ein kleines privates System, in dem ich allerlei dokumentieren kann, meine GIT-Repositories und deren Commits sehe, meine Steckdosen schalten kann, … -ich schweife ab-.
Das ganze System liegt auf meiner Synology NAS sicher in einem RAID Verbund und werkelt da so vor sich hin. Im Hintergrund läuft eine MariaDB 10, als Datenbank. So kam es dann aber die Tage, dass ich etwas an der Datenbank geschraubt habe -mit glücklicherweise vorigem Backup- und in meiner gnadenlosen Blödheit die Datenbank zerschossen habe. Ohhh Schreck!

Wie bereits angesprochen hatte ich mir zum Glück vorher ein Datenbankdump gezogen, ansonsten wären die Tränen glaube ich in Hülle und Fülle geflossen. Wäre immerhin nicht das erste mal, dass ich versehentlich ne Datenbank zerstöre ;).
Was kann man also dagegen tun?

Drei Möglichkeiten sind mir auf die Schnelle eingefallen.
In regelmäßigen Abständen manuell in die Oberfläche von phpMyAdmin gehen wäre mir zu aufwendig und mal ganz unter uns: Nach spätestens dem Dritten mal vergisst man es dann doch wieder.

Ein Automatismus muss also daher! Wäre da noch die Möglichkeit sich einen Export der DB per PHP zu schreiben. Ich meine, wenn die Daten eh alle dort verarbeitet werden, warum dann nicht alle Datenbankobjekte auslesen und als JSON unterspeichern? War mir dann aber im Endeffekt nach 10min Überlegung und Suche auf Stack Overflow zu viel Arbeit und vor allem zu unsicher.

Die Lösung

Die Lösung liegt eigentlich direkt auf der Hand. Sowohl ein MySql Server, als auch eine MariaDB pflegen es ein kleines Programm mitzuliefern, mit Hilfe dessen man einen Datenbankdump ziehen kann. Schön, dass ich da als Erstes dran denke xD.

Naja. Nach kurzer Suche wurde ich dann fündig. (Hier im Wiki)
Leider hat das Ganze nicht so wirklich geklappt, um nicht zu sagen: Das Script funktioniert schlichtweg nicht!
Mich hat dann aber der Ehrgeiz gepackt und eine geschlagene halbe Stunde hat es gedauert, bis sich herauskristallisiert hat, dass der Pfad „/usr/syno/mysql/bin/mysqldump“ schlichtweg falsch ist!
Weiterhin ist das Bash-Script etwas … naja … unpraktikabel anzupassen.

Das Script

Gut. Genug gelesen und um den heißen Brei herum geschwafelt.
Anbei mein Bash Script, welches ihr irgendwo auf eurer Synology NAS, mit dem Namen „mysqldump.sh“, abspeichern müsst:

#!/bin/bash
DIR=[BACKUP-ORDER-PFAD]
DATESTAMP=date +%Y%m%d%H%M%S
DB_USER=[SQL-ROOT-USER]
DB_PASS=[SQL-ROOT-PASSWORT]

# Erstelle Ordner, falls dieser nicht existiert
mkdir -p ${DIR}

# erstelle dump tabellen in gzip
FILENAME=${DIR}mysqldump-${DATESTAMP}.gz
/usr/local/mariadb10/bin/mysqldump -u $DB_USER -p$DB_PASS --opt --all-databases --flush-logs | gzip > $FILENAME

Ersetzt einfach [BACKUP-ORDER-PFAD] mit dem Pfad, an dem der Datenbankdump auf eurer Synology NAS geschrieben werden soll. Achtet auf ein führendes und schließendes „/“.
Ersetzt anschließend [SQL-ROOT-USER] und [SQL-ROOT-PASSWORT] durch die Zugangsdaten eines MariaDB Nutzers, der Zugriff auf ALLE Datenbanktabellen hat. Das muss nicht unbedingt der Root-User sein.

Cronjob einrichten

Noch haben wir es nicht ganz geschafft. Wir müssen das Script noch in bestimmten Intervallen automatisch ausführen. Ansonsten hätten wir uns die Mühe ja nicht machen brauchen und gleich die Backup-Funktion von phpMyAdmin nutzen können. Um einen Cronjob einzurichten müsst ihr euch als Admin in DSM einloggen und in den Einstellungen folgende Schritte vollziehen:

Wechselt in den „Erweiterten Modus“.
Klickt auf den Aufgabenplaner.
Fügt über das Menü ein neues benutzerdefiniertes Skript hinzu.
Stellt nun in den ersten beiden Tabs den Nutzer auf „root“, wählt einen Intervall aus und gebt im letzten Tab den Befehl „sh [PFAD_ZUM_SH_SKRIPT]/mysqlbackup.sh“ ein. Fertig!

Übrigens:

Das Programm „HyperBackup“ von Synology hätte das auch ohne den ganzen Firlefanz getan. Installieren, konfigurieren, fertig!
Es hätte so einfach sein können, aber Hyper Backup, wäre dann doch ein wenig zu viel des Guten, für einen einfachen SQL Datenbankdump. Immerhin zieht das Ganze auch wieder Leistung und damit Performance der Synology Nas.

Melvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Schreibe den ersten Kommentar

*Pflichtfeld

3D Drucker – Die häufigsten Probleme

Du hast Probleme mit deinem Drucker?
Vielleicht hilft dir diese Seite, mit Problemen und Lösungen zum Druck von Modellen.

Auf geht's!