Deutsch | English
MariaDB_dump ist ein shell Skript um alle vorhandenen Datenbanken aus einer bestehenden mysql oder mariadb Datenbank-Engine einzeln zu exportieren um diese an einem angegebenen Speicherort zu sichern. Um eine zyklische Sicherung der Datenbanken durchzuführen eignet sich die Definition eines Cron-Job. Hier wird jedoch nicht weiter darauf eingegangen wie eine solche automatische Ausführung des Skripts mittels Cron-Job durchgeführt wird.
Klone das Git-Archiv mittels git clone.
Zuerst erstellt man Verzeichnis in welchem das Abbild des Repository erstellt werden soll. Anschließend wechselt man in dieses Verzeichnis und führt abschließend den git Befehlt zum Klonen aus. Beispiel:
mkdir -p /root/github
cd /root/github
git clone https://github.com/geimist/MariaDB_dump.git
Verwende die Konfigurationsvorlage config.cnf.template um deine eigene Konfiguration zu erzeugen indem du eine Kopie dieser Datei unter dem Namen config.cnf erstellst.
Die zu konfigurierenden Parameter die sich innerhalb dieser Konfigiurationsdatei befinden sind folgende:
Hierbei handelt es sich um das mysql/mariadb Passwort des Benutzers root. Die Angabe des Passworts ist nur notwendig wenn das Shell Skript nicht als root auf dem System ausgeführt wird von dem die Datenbanken gesichert werden. Nur wenn das Skript als ein gewöhnlicher Benutzer ausgeführt wird ist die Angabe des Root-Kennworts der mysql/mariadb Datenbank notwendig.
Beispiel: Ohne Angabe eines Passworts weil das Skript als System Benutzer root ausgeführt wird kann die Variable mit einem Leerstring definiert werden.
MYSQLPW=""
Anderenfalls wird das Passwort zwischen doppelten Anführungszeichen angegeben.
MYSQLPW="GanzSicherMariaDB_PW"
Das Sicherungsverzeichnis ist dasjenige an dem die exportierten Datenbanken gespeichert werden sollen. Dies muss zwingend angegeben werden sonst können keine Daten exportiert werden.
Beispiel:
BACKUPDIR="/volume1/system/DS_BackUps/MariaDB_DUMP_test"
Mit diesem Parameter kann angegeben werden ob für jede einzeln exportierte Datenbank jeweils ein Unterverzeichnis mit dessen Namen in dem vorher definierten Sicherungsziel abgelegt werden soll. Dies kann bei sehr vielen verfügbaren Datenbanken sehr hilfreich um eine bessere strukturierte Verzeichnisstruktur zu erhalten indem dem die Datenbanken gespeichert werden.
Möchte man für jede einzelne Datenbank ein separates Unterverzeichnis erstellen so ist es notwendig den Paramter zu aktivieren.
Beispiel: Unterverzeichnisse aktivieren
useSubDir=true
Möchte man keine Unterverzeichnisse erstellen kann der Parameter jeden beliebigen Wert annhemen. In diesem Beispiel wird der Begriff false verwendet um dies zu erzielen.
useSubDir=false
Zusätzlich zu dem Export der einzelnen Datenbanken ist es auch möglich eine gesamte Sicherung der kompletten mysql/mariadb Datenbank in einer einzigen Datei zu erstellen.
Möchte man zusätzlich eine gesamte Sicherung der kompletten Datenbank erstellen so ist es notwendig den Parameter zu aktivieren.
Beispiel: Gesamtsicherung aktivieren
DumpAll=true
Möchte man auf eine gesamte Sicherung der Datenbank in einer einzelnen Datei verzichten kann der Parameter jeden beliebigen Wert annehmen. In diesem Beispiel wird der Begriff false verwendet um dies zu erzielen.
DumpAll=false
Zu jeder exportierten Datei wird der jeweilige Datenbankname und zusätzlich das Datum für die Sicherungsdatei verwendet.
Das Standardformat aus der Vorlage ist wie folgt festgelegt: YYYY-MM-DD_hh-mm-ss (z.B. 2025-04-08_19-04-27)
Beispiel:
DATE=$(date +%Y-%m-%d_%H-%M-%S)
Welche Formate verfügbar sind und wie sie anzuwenden sind findet man in der Bedienungsanleitung der Schnittstellenbeschreibung date(1).
Die Programmpfade sind notwendig um den Speicherort der benötigten Werkzeuge zu definieren. Dies ist notwendig weil sich diese systemübergreifend nicht am gleichen Installationsort befinden. Bei den meisten Linux Distributionen ist dies aber bei den Standardwerkzeugen meistens der Fall.
Die Standardeinstellung der Konfigurationsvorlage definiert diese automatisch indem der Befehl which verwendet wird.
Sollte dies aus unbekannten Gründen nicht funktioneren besteht die Möglichkeit die Pfade der benötigten Werkzeute auch manuell zu definieren.
Die benötigten Werkzeuge sind zum einen die Datenbank-Engine mysql und mysqldump um die Datenbanken zu exportieren.
Die Standardkonfiguration dieser ist.
DBengine="$(which mysql)"
mysqldump="$(which mysqldump)"
Eine manuelle Zuweisung würde z.B. wie folt aussehen.
DBengine="/usr/bin/mysql"
mysqldump="/usr/bin/mysqldump"
Es kommt vor dass es nicht erwünscht ist alle vorhandenen Datenbanken der Datenbank-Engine zu exportieren vor allem wenn es sich um Datenbanken zu Testzwecken handelt.
Jede einzelne Datenbank die von der Sicherung ausgeschlossen werden soll kann in diesem Parameter angegeben werden. Handelt es sich um mehr als eine einzelne Datenbank die man ausschließen möchte können multiple Datenbanken getrennt durch ein Leerzeichen angegeben werden.
Beispiel:
ExDB="mysql sys phpmyadmin information_schema performance_schema"
In diesem Beispiel werden in Summe 5 Datenbanken von der Sicherung ausgeschlossen.
- mysql
- sys
- phpmyadmin
- information_schema
- performance_schema
Um Speicherplatz einzusparen ist es sinnvoll nicht jede einzelene Archivdatei für immer auszuwählen. Um die gespeicherten Archive auszudünnen gibt es die Möglichkeit ein weiteres Skript für diese Zwecke einzubinden. Dazu wird z.B. das Skript archive_rotate eingebunden.
Um die Rotation zu verwenden so ist es notwendig den Paramter zu aktivieren. Beispiel: Rotation aktivieren
Rotate=true
Möchte man ohne Rotaion fortfahren kann der Parameter jeden beliebigen Wert annhemen. In diesem Beispiel wird der Begriff false verwendet um dies zu erzielen.
Rotate=false
Das Skript archive_rotate kann an beliebiger Stelle auf dem System gespeichert werden. Um dies zu verwenden benötigt es lediglich die Konfigurationd des Parameters mit dem Pfad zur ausfürhbaren Skript Datei.
Beispiel:
ScriptRotate="/volume1/Pfad_zu/archive_rotate.sh"
Es kann definiert werden wie viele Sicherungen der Vergangenheit aufbewahrt werden sollen. Die zur Verfügung stehenden Parameter sind hierbei die Anzahl der Archive die pro Jahr, Monat, Woche, Tag und Stunden aufbewahrt werden sollen.
Eine detailierte Beschreibung hierzu ist im angegebenen Repository zu archive_rotate finden.
Beispiel:
# Parameter für die Rotation:
HOURS="1x4"
DAYS="24x7"
WEEKS="7x4"
MONTHS="4x6"
YEARS="4x1"
Sofern die Konfigurationsdatei cnf/config.cnf vorhanden ist kann das Skript ohne weitere Angabe von Argumenten ausgeführt werden. Optional ist auch die Übergabe einer Konfigurationsdatei als erstes Argument möglich.
Ausführung ohne Argument bei vorhandener Konfigurationsdatei im Unterverzeichnis ./cnf.
./bin/MariaDB_DUMP.sh
Mit Übergabe eines Arguments für die Konfigurationsdatei.
./bin/MariaDB_DUMP.sh /<PATH_TO_CONFIG>
Das Skript erzeugt nützliche Ausgaben und protokolliert somit den Ablauf.
Beispiel: Hier wird die Ausgabe gezeigt bei dem alle einzelnen Datenbanken und die Gesamt-Datenbank exportiert werden. Zudem werden die Datenbank welche unter dem Parameter für das Ausschlusskriterium definiert sind ignoriert und von einer Sicherung ausgeschlossen.
Login ohne Passwort
Dump Datenbank Test_Datenbank nach /volume2/backup/MariaDB_DUMP/Test_Datenbank/MySQLdump_Test_Datenbank_2025-04-08_22-35-26.sql.gz
Dump der Datenbank "Test_Datenbank" erfolgreich
Überspringe Datenbank: "information_schema"
Überspringe Datenbank: "mysql"
Überspringe Datenbank: "performance_schema"
Überspringe Datenbank: "sys"
Dump GESAMT nach /volume2/backup/MariaDB_DUMP/GESAMT/MySQLdump_GESAMTBACKUP_2025-04-08_22-35-26.sql.gz
Dump der GESAMT-Datenbank erfolgreich
Resultate der Sicherung:
------------------------
Gesicherte DB's
Anzahl: 2
Datenbanken:
1.) Test_Datenbank
2.) GESAMT
Übersprungene DB's
Anzahl: 4
Datenbanken:
1.) information_schema
2.) mysql
3.) performance_schema
4.) sys