Synology NAS – MariaDB Datenbank Sicherung
Über den Synology Dienst HyperBackup kann man nur die gesamte MariaDB (ehemals MySQL) Datenbank sichern und wiederherstellen, nicht einzelne Datenbanken.
Hinzukommt, dass HyperBackup auch noch den Datenbankdienst anhält und in der Zeit die Datenbanken nicht erreichbar sind.
Es gibt zwar einige PHP Tools wie z.B. MySQL Dumper, jedoch wozu extra noch extra Webseite welche ganze sichern kann, wo man für die regelmäßige Ausführung auch ein Script/Task braucht, wenn ganze auch mit Bordmitteln ohne weitere Extras funktioniert?
Also los geht es
1) In DSM einfach eine Aufgabe erstellen, der ausgewählte Benutzer muss weder root noch ein Admin sein, dieser benötigt nur Schreibrechte für den Zielordner.
2) Gewünschte Zeit angeben wo die Aufgabe ausgeführt werden soll
3) Script einfügen
Im dem Beispiel ist ganze für 7 Tage, im Freigegebenen Ordner „Backup“ im Unterordner „MySQL“, mit Paket MariaDB10.
MySQL Root Passwort ist anzupassen, und ggf. die Tage wenn man mehr oder weniger als 7 Tage möchte.
#!/bin/bash
HOLD_DAYS=7
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/volume1/Backup/MySQL"
MYSQL_USR="root"
MYSQL_PWD="TopSecret007!"
MYSQL_CMD=/var/packages/MariaDB10/target/usr/local/mariadb10/bin/mysql
MYSQL_DMP=/var/packages/MariaDB10/target/usr/local/mariadb10/bin/mysqldump
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
databases=`$MYSQL_CMD --user=$MYSQL_USR -p$MYSQL_PWD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
$MYSQL_DMP --force --opt --user=$MYSQL_USR -p$MYSQL_PWD --databases "$db" | gzip > "$BACKUP_DIR/$TIMESTAMP/$db.gz"
done
find $BACKUP_DIR -maxdepth 1 -mindepth 1 -type d -mtime $HOLD_DAYS -exec rm -rf {} \;