Datenbankbackup

Letzte Änderung: 2020-03-02

Achtung! Dies bezieht sich auf den Docker mariadb aus meinem Dockerguide! Soll eine lokal -installierte Datenbank gesichert werden, schaut weiter unten nach!

Ich zeige das an dem Beispiel einer vorhandenen Datenbank Namens      nextclouddatabase    mit dem Root-Passwort    123456. Das Backupverzeichnis ist unter /sharedfolders/Data/Databasebackup.

Als geplante Aufgabe im OMV5, z.B. täglich:

docker exec mariadb /usr/bin/mysqldump -u root –password=123456 nextclouddatabase > /srv/dev-disk-by-label-Extern/Data/Databasebackup/nextclouddatabase.sql

oder mit Datums- und Zeitangabe:

docker exec mariadb /usr/bin/mysqldump -u root --password=123456 nextclouddatabase > /srv/dev-disk-by-label-Extern/Data/Databasebackup/`date +%Y-%m-%d-%H+%M+%S`-nextclouddatabase.sql 

oder einfach alle Datenbanken komplett in einer Datei:

docker exec mariadb /usr/bin/mysqldump -u root --password=123456 --all-databases > /srv/dev-disk-by-label-Extern/Data/Databasebackup/alldatabases.sql

Restore:

Um das Backup wiederherzustellen, Im Terminal folgendes eingeben (der Name der Datenbank muss korrekt angegeben werden und mind. eine leere Datenbank muss mit dem Namen vorher erstellt worden sein)

cat /srv/dev-disk-by-label-Extern/Data/nextclouddatabase.sql | docker exec -i mariadb /usr/bin/mysql -u root --password=123456 nextclouddatabase

Oder um alle Datenbanken auf einmal wiederherzustellen:

cat /srv/dev-disk-by-label-Extern/Data/alldatabases.sql | docker exec -i mariadb /usr/bin/mysql -u root --password=123456

Je nach Datenbankmenge bzw. Datenbankinhalt, kann das eine Weile dauern!

Anschließend im phpMyAdmin auf Benutzerkonten und unten auf „Die Benutzerprofile neu laden“ klicken.

———————————————————–

Lokale Datenbank – keine Docker DB – nur zu Informationszwecken verwenden!

Als geplante Aufgabe, z.B. täglich.

mysqldump -u root -p123456 nextclouddatabase | gzip > //srv/dev-disk-by-label-Extern/Backup-Database/`date +%Y-%m-%d-%H+%M+%S`-nextclouddatabase.sql.gz

Den Zeitpunkt der Sicherung wählt ihr nach eueren belieben. Ich sichere momentan Täglich. Zusätzlich zu der Datenbank oder den Datenbanken auch folgenden Befehl verwenden. Damit werden auch die Benutzerkonten mit gesichert. Was würde das auch bringen, wenn die Datenbanken vorhanden sind und die Benutzerkonten mühseelig mit Hand eingetragen werden müssten.

mysqldump -u root -p123456 mysql | gzip > //srv/dev-disk-by-label-Extern/Backup-Database/`date +%Y-%m-%d-%H+%M+%S`-mysql.sql.gz

Das war auch schon der Sicherungsprozess. Wendet den ersten Befehl für all Eure Datenbanken an. Jede Datenbank hat hier einen eigenen mysqldump-Befehl.

Wiederherstellen von Datenbanken: Achtung! Ist nicht die optimale Lösung, umständlich und kann bei größeren Datenbanken zu Problemen führen! Nur für Informationszwecke gedacht!

Das erledigte ich damals in phpMyAdmin. Jede Datenbank, die wiederhergestellt werden soll, muss Namentlich identisch vorher angelegt sein. Dabei spielt es keine Rolle, ob diese leer ist oder schon Daten beinhaltet. Wählt dann die Datenbank   z.B. nextclouddatabase   aus, geht auf Importieren, dann auf Durchsuchen (Samba-Ordner Backup-Database) und wählt die Sicherungsdatei  nextclouddatabase.sql.zip   aus und drückt ok. Die Datenbank wird wiederhergestellt. Habt ihr das für alle Datenbanken erledigt, denkt daran, anschließend die   mysql.sql.gz   zu importieren, damit auch die Benutzerkonten mit den jeweiligen Zugriffsrechten wieder verfügbar sind. Das war`s auch schon. Ich empfehle, die Sicherungsdateien separat noch extern (z.B. mit rsync) auf einem anderen Datenträger zu legen. Nur zur Sicherheit, falls die Datenplatte(n) oder der ganze Server (warum auch immer) einen Defekt erleidet. Ich sichere vorsichtshalber separat mit Duplicati in die Cloud.

Achtung! Nach dem Import, noch bevor phpmyadmin wieder geschlossen wird, vorsichtshalber einen neuen root-Benutzer mit Globalen Rechten (ALL PRIVELEGES,GRANT und Hostname %) erstellen. Ich hatte das Phänomen, dass trotz importiertem „root-User“ der root-Zugang mittels phpadmin zur Datenbank nicht mehr möglich war!

Zur Info:

Alle Versuche, die Datenbanken im phpMyAdmin mit   Export   zu tätigen, schlugen beim Import fehl. Ich habe das nicht weiter verfolgt, weil mit „mysqldump“ schon die einfachste, automatisierte Möglichkeit gezeigt wurde.