MariaDB 10 Sicherung aller Daten

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
893
Punkte für Reaktionen
11
Punkte
44
Ich habe auf meiner DS420 Nexcloud (docker) installiert um Kalender, Aufgaben und Kontrakte und mit Endgeräten zu synchronisieren. Dabei nutze ich MariaDB 10 (Paket) als Datenbank.

Natürlich kann ich in Nextcloud die einzelnen Kalender und Adressbücher exportieren aber gibt es nicht auch eine Möglichkeit alle Daten der Datenbank (verschlüsselt) zu sichern/exportieren?

Kann man gar den Vorgang automatisieren sodass man regelmässig ein Backup aller Daten in MariaDBm 10 hat (sind bei mir nur die Daten von Nextcloud)?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.152
Punkte für Reaktionen
4.900
Punkte
519
Zum Thema Sicherung von Docker-Anwendung hatte ich hier schon mal nen Thread
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Ich habe dazu für gitlab, postgres etc. welche im docker laufen, eigene Backup Ordner gemacht die in den Container rein gemounted werden und dort lege ich zB. den DB Dump von postgres ab oder zB. das ist das Ziel vom gitlab Backup (Konfig Anpassung).

Die postgres wird bei mir jeden Abend via Aufgabenplaner von Syno gedumped. Dazu verwende ich docker exec um den Befehl pgdump im Container auszuführen.
Um Rotation etc. musst du dich ggf. selber beim Backup Task kümmern. Ich hebe immer nur den letzten erfolgreichen Dump auf.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.385
Punkte für Reaktionen
1.199
Punkte
234
Wenn ich das richtig verstanden habe, nutzt er die Synology MariaDB, welche er sichern möchte. Die bringt ja ein eigenen Tool zum dumpen mit (hab den Pfad aber gerade hier mit dem Handy nicht zur Hand).
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.215
Punkte für Reaktionen
509
Punkte
174
hab den Pfad aber gerade hier mit dem Handy nicht zur Hand
Das bordeigene Werkzeug dazu heisst 'mysqldump' :)
Wird geführt unter '/usr/local/bin' geführt und ist ein LINK zu '/volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/mysqldump'
 
  • Like
Reaktionen: geimist

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129

Ja mariaDb ist ein Fork von mysql. Mysqldump gibt es dann dort.

Stimmt, die mariadb wurde als Paket installiert, das andere mit docker. Dann spart man sich das docker exec und kann direkt mysqldump aufrufen. Hab ich durch den 2. Post hier etwas übersehen.
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
893
Punkte für Reaktionen
11
Punkte
44
Danke für Eure Hilfsbereitschaft. Ich habe Angst was falsch zu mache und mir Nextcloud zu zerstören.
Wenn ich das richtig verstanden habe, nutzt er die Synology MariaDB, welche er sichern möchte. Die bringt ja ein eigenen Tool zum dumpen mit

Sorry, wenn ich mich unklar ausgedrückt habe aber richtig: Nextcloud ist als docker installiert, MariaDB 10 als Synology Paket.

Also führe ich mysqldumb als User, Mitglied in Gruppe administrators, aus.

Code:
mysqldump -u USER -p --all-databases > SICHERUNG.sql

Ist sudo hier unnötig?

USERS ist dabei der Nextcloud-Admin?

Das Passwort gebe ich bei der Ausführung ein und nicht beim Aufruf? Wird ohne -p das Passwort nicht abgefragt?

Import / Rücksicherung aller Datenbanken geht dann mit

Code:
mysql -u USER -p < SICHERUNG.sql

Muss ich die DBs in MariaDB 10 vorher leeren/löschen oder werden die Inhalte überschrieben (und im DUB nicht vorhandene Datensätze gelöscht?
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
893
Punkte für Reaktionen
11
Punkte
44
Stimmt, grundsätzlich mag ich's mit GUI. Aber ist ein Logisches Backup mit Export nicht besser? Da die Datenbank angehalten wird, gibt es keine Probleme mit Änderungen während des Backups und ich könnte die Daten wohl auch in andere SQL-Datenbanken importieren.

Ausserdem nutze ich schon Active Backup for Business (Dateiserver), könnte ich MariaDB 10 auf Dateiebene nicht auch damit sichern? Ich weiss, Hyper Backup kann installierte Anwendungen/Pakete sichern aber mehr Details fand ich bis jetzt nicht. (Ehrlich gesagt verwirren mich die verschiedenen BackUp Anwendungen von Synology, eine Übersicht "was wozu" habe ich aber auch noch nicht gefunden.)
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Da die Datenbank angehalten wird, gibt es keine Probleme mit Änderungen während des Backups

Man muss die DB nicht anhalten, um ein Konsistentes Backup zu haben.

Das können Datenbanken und deren Dump Programme schon (Strichwort Transaction bzw. Isolation Level).

Ich würde persönlich dem mysqldump mehr vertrauen, als dem was HyperBackup da dann rauszaubert. Aber du kannst ja ggf. auch beides triggern. Das passt wohl eh auch, ist aber eine BlackBox für mich. Daher weniger Vertrauen 🤪
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
wohl auch in andere SQL-Datenbanken importieren.
Genau in kompatible mysql DBs kannst du rein importieren.

In andere DBs muss man meistens Skripte vorschalten, die Konvertierungen durchführen. Aber zB mysql zu postgres haben wir hier schon öfters durch auch bei großen Datenbanken mit 500-1000GB.
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
893
Punkte für Reaktionen
11
Punkte
44
Ich würde persönlich dem mysqldump mehr vertrauen, als dem was HyperBackup da dann rauszaubert. Aber du kannst ja ggf. auch beides triggern. Das passt wohl eh auch, ist aber eine BlackBox für mich.
Ich bevorzuge auch Backups, die ich notfalls ohne spezielle Software wiederherstellen kann. Daher Active Backup for Business, das erstellt lesbare Verzeichnisse, wie das gute alte rsnapshot, man kann aber komfortabler zwischen den Sicherungen vor und zurück gehen um die richtige zu suchen.

Bleiben für mich aber noch ein paar Fragen offen zur Nutzung von mysqldumb.
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Ist sudo hier unnötig?
Nein, sollte nicht notwendig sein.

USERS ist dabei der Nextcloud-Admin?
Bei --all-databases muss es wenn ein admin Benutzer sein, der alle DBs lesen darf.
Aber führ das Statement einfach mal aus, und schau, ob ein Fehler kommt oder nicht.

Das Passwort gebe ich bei der Ausführung ein und nicht beim Aufruf? Wird ohne -p das Passwort nicht abgefragt?
Ja, ohne -p bekommst du dann den Hinweis, dass keine Authentifizierung möglich ist (mysql ist bei mir schon fast 10 Jahre her, war aber damals so was ich mich jetzt noch erinnere). Aber auch hier gilt, lass das -p weg und sieh einfach mal, was passiert (bzw. welcher Fehler kommt).

Muss ich die DBs in MariaDB 10 vorher leeren/löschen oder werden die Inhalte überschrieben
Ja, wenn du den Dump so wie oben beschrieben machst, wird er beim Rückimport sonst wohl duplicate Keys bzw. Datenbank vorhanden etc. anmerken.
Alternative wäre, siehe mysqldump (Docu, man Page bzw. --help): --add-drop-database --add-drop-table


Import / Rücksicherung aller Datenbanken geht dann mit
Mit mysqlbackup würde ich das machen. Mit der Ausgabeumleitung in den mysql wird es potentiell auch gehen, wenn es ein vollständiger Dump mit Create Database/Tables ist.

Wieviele DBs hast du den da? Grundsätzlich bietet es sich doch öfters an, je DB ein Backup zu machen.
Dann muss man auch nur eine DB droppen und wieder neu anlegen.

Wie da von dir oben geschrieben, würde er auch create database bzw. create tables und user rechte preserven. Es gibt aber auch Möglichkeiten, das zu unterbinden. Aber so bist du grundsätzlich mal auf der sicheren Seite. Ich verwende seit ca. 10 Jahren nur mehr postgres bzw. mssql. Daher ist mein mysql Wissen nicht mehr aktuell. Aber man mysqldump oder mysqldump --help sollten dir weiterhelfen können. Die Defaults sind jedenfalls so, dass man damit besser fährt, als wenn man gewisse Dinge added/angibt. Wenn du zB. dass Drop Database dazu gibst, würde er, falls der Dump ungewollt rein gepipt wird, halt die DB löschen, auch wenn du es doch nicht wolltest (so muss ich her gehen, und das drop database bewusst antriggern).
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
893
Punkte für Reaktionen
11
Punkte
44
Wieviele DBs hast du den da? Grundsätzlich bietet es sich doch öfters an, je DB ein Backup zu machen.
Dann muss man auch nur eine DB droppen und wieder neu anlegen.
Ich habe bewusst nur eine Datenbank angelegt, nextcloudDB. Was Nextcloud tat, weiss ich nicht.

Ansonsten verstehe ich von Deinen Ausführungen leider nicht viel. Aber ich habe inzwischen mysqldump ausgeführt und mir die *.sql-Datei mit einem Texteditor angeguckt. Sie enthält offenbar den Inhalt meiner Kalender und Adressbücher. Und nextcloudDB finde ich auch, gleich am Anfang.

SQL:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `nextcloudDB` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `nextcloudDB`;

Die Struktur kann ich allerdings nicht erkennen. Die Tabellen (DROP TABLE, CREATE TABLE) entsprechen jedenfalls nicht meinen Kalendern und Adressbüchern. Aber ich nehme an, dass ich die Datenbank mit mysql -u USER -p < SICHERUNG.sql wiederherstellen kann.

Bisher ging ich davon aus, dass ich vorher in MariaDB 10 Datenbank zurücksetzen wählen muss. Die Syntax DROP TABLE IF EXISTS lässt mich nun allerdings vermuten, dass dies nicht nötig ist, richtig?

Zusatzfragen:

Gibt es eine Option für so etwas wie eine Fortschrittsanzeige bei mysqldump?

Die *.sql Datei kann offenbar von jedem gelesen werden. Habe ich eine Option übersehen, die den Export durch mysqldump verschlüsselt?

Ich werde mir wohl doch mal Hyper Backup angucken, um MariaDB 10 mit Client-seitiger Verschlüsselung lokal zu sichern...
 
Zuletzt bearbeitet:

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Ich befürchte, wenn du dir das sauber aufsetzen willst, musst du dich mehr in das Thema einarbeiten. Tutorials, Hilfe, etc. das sprengt den Rahmen hier (zumindest meinen).

Und ja, der Dump ist unverschlüsselt. Aber alles was das OS so hergibt kann dann beim Schreiben des Dumps verwendet werden. Man kann den Stream zB. direkt gzippen und dann via Linux Bash auch verschlüsseln (ob bzw. was da evt. via Synology schon da ist, wie gpg etc. kann ich gerade nicht testen via Handy).
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat