Ihr habt eine Synology Diskstation oder Rackstation NAS und möchtet Daten der mySQL oder MariaDB sichern die über das Paketzentrum installiert sind? Welche Backups der Datenbanken sind schon vorhanden, und wie kann man rotierende Dumps der Datenbanken erstellen? Das erkläre ich im folgenden Beitrag.

MariaDB aus dem Paketzentrum

DIe MySQL oder MariaDB aus dem Paketzentrum ist perfekt für den Betrieb kleiner Anwendungen direkt auf der Synology NAS. Das ganze ist gut umgesetzt im Standard von Synology, aber eben deutlich anders als bei einer installierten MySQL auf einem Debian oder anderen Linux System. Vor allem die Ordner der Datenablage unterscheiden sich von Linux. Wo die Daten abgelegt werden könnt ihr, bei dem MariaDB Pake, in der Anwendung festlegen:

Synology MariaDB Volume

Pfade

Wenn ihr das Volume1 ausgewählt habt so findet ihr die eigentlichen Datenbanken im Ordner

/volume1/@database/mariadb

oder

/volume1/@database/mysql

Dort befinden sich auch Backups von früheren Versionen.
Die Datenbanken findet ihr also nicht auf einem gemeinsamen Ordner. Mit einem Backup des gesammten Volumes würden die Datenbanken gesichert sein. Das betrifft aber nur die Container der Daten im Filesystem. Ob daraus eine Datenbank wirklich konsistent widerhergestellt werden kann ist nicht garantiert. Wer also häufiger Sicherungen und verwendbare Backup Dumps haben möchte braucht eine Lösung. Doch die ist nicht weit!

AutoMySQLBackup

Der Helfer ist das Bash Script automysqlbackup. Das Script wird auf Sourceforge bereitgestellt. Es hat zwar schon einige Jahre auf dem Buckel, hat sich aber bewährt. Es sichert auch problemlos Installationen mit 100 Datenbanken und mehr. Dumps werden in leicht auffindbaren täglichen, wöchentlichen und monatlichen Ordnern gespeichert. Im weiteren erkläre ich wie ich das Script benutze. Hier bekommt ihr automysqlbackup: https://sourceforge.net/projects/automysqlbackup/

Ihr benötigt aus dem heruntergeladenen Archiv nur die Datei automysqlbackup.

Script einrichten

Man kann natürlich den admin/root Benutzer der Synology benutzen und das Script im Betriebssystem der Rackstation vergraben. Es geht aber auch einfacher. Ich benutze für solche Dinge einen gemeinsamen Ordner ADMIN, dort gibt es für solche Zwecke den Ordner scripte. Dort befindet sich das Bash Script bei mir.

Synology Admin Ordner

Das Script befindet sich bei mir dann in den folgenden Pfad, den braucht ihr auch später:

/volume1/ADMIN/scripte/automysqlbackup

Einstellungen

Das Script hat wahrlich viele Einstellungen, zu Anzahl von Backups, Paramertern für mysqldump, etc. Wir werden nur 3 benötigen! Daher sparen wir uns auch das anlegen eines extra CONFIG Files. Die folgenden Parameter prüft/ändert ihr in den ersten Zeilen:

CONFIG_mysql_dump_username=rootDer root User, in der Regel ist kein anderer notwendig.
CONFIG_mysql_dump_password=geheimDas root Passwort der MySQL / MariaDB.
CONFIG_backup_dir=“/volume1/BACKUP/synology/mysql“ Das Zielverzeichniss für die Backups
CONFIG_mysql_dump_port=3306Überprüfen falls ein anderer Port verwendet wird

USERNAME: Man kann zwar theoretisch auch einen extra User erzeugen, dieser hat aber oft nicht die gleichen Berechtigungen und bei den Systemtabellen kann es zu Warning kommen.

PASSWORD: Nicht mit dem root/admin Passwort der Synology verwechseln! Das Passwort lässt sich in der Anwendung einstellen. (Siehe erstes Bild)

BACKUP_DIR: Dies könnt ihr zu euren gemeinsamen Ordnern anpassen. Ich habe einen Dateiordner mit dem Namen BACKUP, daher sieht die Einstellung bei mir so aus: „/volume1/BACKUP/synology/mysql“

Automatisieren

Nun könnt ihr das Script testen, am besten gleich den entsprechenden Job dafür einrichten. In der Synology Systemsteuerung findet ihr den Punkt Aufgabenplaner. Hier wird der entsprechende cronjob angelegt. Wie häufig ihr das ausführen wollt bleibt euch überlassen. Man kann das wie üblich täglich machen, aber auch stündlich oder zu anderen gewünschten Zeitpunkten. Cronstyle eben… Als Benutzer wird wieder der User root ausgewählt.

Der auszuführende Befehl ist nach meiner Ablagevariante:

bash /volume1/ADMIN/scripte/automysqlbackup

Nach dem Speichern könnt ihr nur mit dem Button „Ausführen“ das Script einmal laufen lassen und kontrollieren ob das Script läuft.

Ausführen

Das Script darf den Fehler „mail: command not found“ werfen, das ist auf der Synology so. Dafür könnt ihr die Benachrichtigungsfunktion der Synology Aufgabe verwenden.
Wenn ihr alles richtig gemacht habt findet ihr am Backup Ziel ab sofort die folgenden Ordner mit Inhalt der echten mySQL Dumps:

automysqlbackup Ordner

Viel Spaß beim einrichten!

MariaDB und MySQL auf einer Diskstation

Auch das ist simpel. Wenn beide Varianten installiert sind „lauschen“ diese auf unterschiedlichen Ports. Welcher Port das ist seht ihr in den Datenbank Einstellungen (Bild 1). Nun benötigt ihr das automysqlbackup Script einfach ein zweites mal und stellt da den anderen Port ein.

Probleme

Wenn ihr ansonsten Probleme mit dem Script habt benutzt SSH, den root User und ruft das Script direkt an der Bash auf. So findet ihr falsche Einstellungen und Probleme einfacher.
Sind zum Bsp. die Ordner vorhanden aber keine Dumps zu finden ist in der Regel das Passwort falsch konfiguriert.