EleLa - Elektronik Lagerverwaltung Hilfe

Synology DiscStation Tutorial - Einrichten automatischer Backup der MariaDB Datenbank

Dieses Tutorial zeigt wie man bei einer Synology Discstation ein automatisches Backup der MariaDB Datenbank einrichtet, so dass per Aufgabenplaner die Datenbanken komplett gesichert werden. Da die Linux-EXE "EleLa" nicht auf der DiscStation ausführbar ist, wird ein Backup der SQL Datenbank mittels Script und dem MariaDB Tool "mysqldump" durchgeführt.

Benötigte Vorbereitung:

Auf dem Server sollte eine Dateifreigabe für den Backup eingerichtet werden. In diesem Beispiel ist auf dem "volume1" eine Freigabe "install" erstellt. Darunter die Ordner Struktur "_Backup\mysqldump". Aus sicht der DS ist somit der Verzeichnisbaum so:

/volume1/install/_Backup/mysqldump
/volume1/install/_Backup/mysqldump/backup

In den Ordner "mysqldump" wird die Datei "mysqlbackup.sh" kopiert. Wenn dieser Script ausgeführt wird werden die Backups in das Unterverzeichnis "backup" abgelegt.

Der Script "mysqlbackup.sh":

Der Script sichert alle Datenbanken der MariaDB V5 und MariaDB V10 installation in 2 Dateien. Wichtig: Es muss immer der volle Pfad ausgeschrieben werden, relative Pfade kennt der Cron-Job nicht!

#!/bin/bash
#
# dieses Skript kann man beliebig oft ausführen
# Stand 03.01.2020/Mm
#
# Parameter:
# Anzahl der Sicherungen die aufgehoben werden sollen
KEEP=30
# Backup-Verzeichnis
DIRBACKUP="/volume1/install/_Backup/mysqldump/backup"
# Maria DB User für Backup (root) (ohne "")
SQLUSER=<Username>
# Maria DB Passwort für Backup (ohne "")
SQLPASSWD=<Password>
# Backup von MariaDB V5 ausführen == "1"
BACKUPV5="1"
# Backup von MariaDB V10 ausführen == "1"
BACKUPV10="1"
#
# Script:
# MariaDB10 Server
if [ $BACKUPV10 == "1" ]
then
  DATE=`date +%Y%m%d_%H%M%S`
  # Dateien lesen und alte löschen
  BACKUPS=`find $DIRBACKUP -name "mysql10dump-*.gz" | wc -l | sed 's/\ //g'`
  while [ $BACKUPS -ge $KEEP ]
  do
    ls -tr1 $DIRBACKUP/mysql10dump-*.gz | head -n 1 | xargs rm -f
    BACKUPS=`expr $BACKUPS - 1`
  done
  rm -f $DIRBACKUP/.mysql10dump-${DATE}.gz_INPROGRESS
  /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/mysqldump --opt -u$SQLUSER -p$SQLPASSWD --all-databases | gzip -c -5 > $DIRBACKUP/.mysql10dump-${DATE}.gz_INPROGRESS
  mv -f $DIRBACKUP/.mysql10dump-${DATE}.gz_INPROGRESS $DIRBACKUP/mysql10dump-${DATE}.gz
fi
# MariaDB5 Server
if [ $BACKUPV5 == "1" ]
then
  DATE=`date +%Y%m%d_%H%M%S`
  # Dateien lesen und alte löschen
  BACKUPS=`find $DIRBACKUP -name "mysql5dump-*.gz" | wc -l | sed 's/\ //g'`
  while [ $BACKUPS -ge $KEEP ]
  do
    ls -tr1 $DIRBACKUP/mysql5dump-*.gz | head -n 1 | xargs rm -f
    BACKUPS=`expr $BACKUPS - 1`
  done
  rm -f $DIRBACKUP/.mysql5dump-${DATE}.gz_INPROGRESS
  /volume1/@appstore/MariaDB/usr/bin/mysqldump --opt -u$SQLUSER -p$SQLPASSWD --all-databases | gzip -c -5 > $DIRBACKUP/.mysql5dump-${DATE}.gz_INPROGRESS
  mv -f $DIRBACKUP/.mysql5dump-${DATE}.gz_INPROGRESS $DIRBACKUP/mysql5dump-${DATE}.gz
fi
exit 0

Die Parameter im oberen Abschnitt müssen den gegebenheiten angepasst werden. SQLUSER und SQLPASSWD dürfen keine " haben.

Hier kann die Original Script Datei geladen werden.

Einrichten "Aufgabeplaner" in der Systemsteuerung

Die Systemsteuerung wird über das Web-Interface von der Discstation geöffnet. Der "Aufgabenplaner" legt automatisch je Eintrag einen Cron-Job in der Datei "/etc/crontab" an. Die DS muss dafür nicht neu gestartet werden.

In der Systemsteuerung den "Aufgabeplaner" auswählen und einen neuen Eintrag erstellen.

Der Benutzer muss "root" sein, da ansonsten keine Rechte für die Dateien vorhanden sind.

Der Zeitplan wie oft und wann das Backup ausgeführt werden soll kann jeder für sich bestimmen.

Anhand dem Zeitplan und dem Parameter "KEEP" in der Script Datei ergibt sich dann der Zeitrahmen wie lange man ein Backup hat.
Hier wird der komplette Pfad/Dateiname zum Script aus Sicht der DiscStation eingetragen, beginnend ab dem Wurzel Verzeichnis.

Wenn man alles eingegeben hat kann der Script mit "Ausführen" getestet werden. Wenn im Backup Ordner die Sicherungsdateien mit gefüllten Daten drin liegen, dann wurde alles richtig gemacht.

Wenn nicht, dann kann man sich mit einem Terminalprogramm (z.B. Putty) in den Server einloggen, zum Script-Verzeichnis wechseln und den Script manuell ausführen:

sudo -i
<root Passwort eingeben>
cd /volume1/install/_Backup/mysqldump
sh mysqlbackup.sh

Hier werden dann, wie bei Linux üblich, die Fehler angezeigt, auch die Zeilennummer wo der Fehler auftrat.


SVN Server Backup

EleLa benötigt keinen SVN Server, dieser dient nur zu eigenen Quellcodeverwaltung.

Sollte man die DiscStation als SVN Server benutzen, so kann man diesen Script "svnbackup.sh" nutzen um die eigenen SVN Repositories zu sichern. Benötigt wird dazu diese Verzeichnisstruktur (entsprechend den eigenen anpassbar):

/volume1/install/_Backup/svndump
/volume1/install/_Backup/svndump/backup
/volume1/install/_Backup/svndump/dump

Das Script liest vom SVN die jeweilige SVN Revision und erzeugt nur dann ein Dump wenn sich die SVN Revision geändert hat. In der Datei "Log.txt" wird geschrieben welche Repositories gesichert wurden, bzw. welche nicht.

Aktiviert wird der automatische Backup ebenfalls mit dem "Aufgabenplaner". Details zur Parametrierung sind in der Script Datei beschrieben. Getestet werden kann der Script ebenfalls mit einem Terminalprogramm wie beim Script "mysqlbackup.sh".


© 2010-2023 by Markus Müller