Hallo Server Admins, ich habe mir bei Hetzner so eine Storage Box geholt. Darauf möchte ich tägliche Backups meiner MariaDB Datenbank machen. Die Frage ist nur, wie am besten? Je mehr ich im Netz zu diesem Thema suche, um so verwirrter bin ich.
Daher meine Frage an das Fediverse: Wie ist das beste Vorgehen bzw. welche Lösungen sind für einen Anfänger bei diesem Thema zu empfehlen?
ForrestGrump
Als Antwort auf ibims • • •ibims
Als Antwort auf ForrestGrump • • •Ja mit Ubuntu 24.04 LTS.
elrido
Als Antwort auf ibims • •mögen das
Andreas, ForrestGrump und ibims mögen das.
Friendica Admins hat dies geteilt.
ibims
Als Antwort auf elrido • • •@elrido
Das wäre super.
elrido
Als Antwort auf ibims • •Sorry für die späte Antwort, hier ist was sich für mich bewährt hat:
mariadb-dump -C --single-transaction -f --opt --routines -u"${MYSQL_USER}" -p"{$MYSQL_PASSWORD}" "${MYSQL_DATABASE}" | gzip > "${MYSQL_DATABASE}-$(date -I).sql.gz"Kurz zur Erläuterung der Optionen, Kommandos und deren Zwecke:
-
-
-
... mehr anzeigen--compress / -CKomprimiert die Daten zwischen MariaDB-Server und diesem Client (mit zlib). Selbst wenn beides auf demselben Host läuft, beschleunigt es das Backup weil CPU-Zeit heute in der Regel immer noch in grösserem Überfluss als Netzwerk und Memory und Disk-I/O-Bandbreite ist.--single-transactionDamit die Daten konsistent sind, willst Du alles in einer Transaktion einfangen. Downside: Das blockiert alle schreibenden Datenbank-Zugriffe während des Backups. Falls Du einen scale-out-cluster hast, kannst Du das Backup natürlich auf einer der Read-only-Replikas machen, ohne Impact auf die Applikation.--force / -fWeitermachen, aSorry für die späte Antwort, hier ist was sich für mich bewährt hat:
mariadb-dump -C --single-transaction -f --opt --routines -u"${MYSQL_USER}" -p"{$MYSQL_PASSWORD}" "${MYSQL_DATABASE}" | gzip > "${MYSQL_DATABASE}-$(date -I).sql.gz"Kurz zur Erläuterung der Optionen, Kommandos und deren Zwecke:
--compress / -CKomprimiert die Daten zwischen MariaDB-Server und diesem Client (mit zlib). Selbst wenn beides auf demselben Host läuft, beschleunigt es das Backup weil CPU-Zeit heute in der Regel immer noch in grösserem Überfluss als Netzwerk und Memory und Disk-I/O-Bandbreite ist.--single-transactionDamit die Daten konsistent sind, willst Du alles in einer Transaktion einfangen. Downside: Das blockiert alle schreibenden Datenbank-Zugriffe während des Backups. Falls Du einen scale-out-cluster hast, kannst Du das Backup natürlich auf einer der Read-only-Replikas machen, ohne Impact auf die Applikation.--force / -fWeitermachen, auch wenn Fehler auftreten. Z.B. könnte eine Tabelle beschädigt sein und einREPAIRnötig haben, aber die restlichen Tabellen sollen trotzdem noch gesichert werden.--opt"This option is shorthand. [...] Enabled by default, [...]. It should give you a fast dump operation and produce a dump file that can be reloaded into a MariaDB server quickly." -- Quelle--routinesFür den Fall, dass Deine DB Stored Procedures und Funktionen enthält. Bei typischen Web-Apps eher selten, aber falls vorhanden, willst Du die auch sichern.gzipKomprimiert SQL Text-Datei mit dem in CPU-Zeit "billigen" zlib-Algorithmus. Falls Du knapp an Speicher bist und genug CPU- und Zeit-Budget fürs Backup hast, kannst Du natürlich auf xz oder zstd oder was anderes wechseln, was eine bessere Kompressionsrate gegen CPU-Zeit tauscht.Falls Du eine grosse MariaDB-Instanz mit vielen Datenbanken hast, kannst Du auch die DBs listen und Dir Kommandos pro DB generieren lassen (das lockt dann auch nur eine DB um die andere):
Und last but not least, um ein so erstelltes Backup wiederherzustellen, pipest Du die SQL-Kommandos zurück in mariadb:
zcat "${MYSQL_DATABASE}-2026-02-22.sql.gz" | mariadb -u"${MYSQL_USER}" -p"${MYSQL_PASSWORD}" "${MYSQL_DATABASE}"Roland Häder🇩🇪 mag das.
teilten dies erneut
Friendica Admins und Roland Häder🇩🇪 haben dies geteilt.
ForrestGrump
Als Antwort auf ibims • • •Dennix
Als Antwort auf ibims • • •GitHub - sixhop/AutoMySQLBackup: A fork and further development of AutoMySQLBackup from sourceforge. sourceforge.net/projects/automysqlbackup/
GitHubRob
Als Antwort auf ibims • • •GitHub - tiredofit/docker-db-backup: Backup multiple database types on a scheduled basis with many customizable options
GitHubibims
Als Antwort auf Rob • • •Nativ
Rob
Als Antwort auf ibims • • •bbₜᵤₓᵢ
Als Antwort auf ibims • • •rbs
Als Antwort auf bbₜᵤₓᵢ • • •ich nutze borg + borgmatic, letzteres hat eine integrierte Funktion für DB-Backups. Ich bin damit bisher extrem zufrieden.
Link zur Doku:
torsion.org/borgmatic/referenc…
borgmatic - MySQL
torsion.orgelrido mag das.
Jan Sandbrink
Als Antwort auf ibims • • •um mal verschiedene andere Faktoren von "kommt drauf an" auszuklammern: bist du schon so weit, dass dein backup als Datei bei dir rumliegt? Weil ab da bist du nur noch ein scp (copy, aber mittels SSH) von deinem Ziel entfernt.
Oder brauchst du auch noch Tipps wie du dein backup erstellst?
ibims
Als Antwort auf Jan Sandbrink • • •Habe bis jetzt immer per mysqldump Backups erstellt und lokal gespeichert.
Friendica Admins hat dies geteilt.
Jan Sandbrink
Als Antwort auf ibims • • •dann könnte deine backup strategie darin bestehen diese lokalen backups in die box zu kopieren:
scp my-backup.sql.gz uXXXXXX-subY@uXXXXXX.your-storagebox.de:my-backup.sql.gz
Dazu musst du den SSH key des lokalen Nutzers der den Upload durchführt in der Box hinterlegen.
In meinem Beispiel nutze ich einen subaccount in der storage Box, damit verschiedene Server ihre eigenen Sachen sichern können.
Stefan Ritter
Als Antwort auf ibims • • •ibims
Als Antwort auf Stefan Ritter • • •Genau, sowas in der Art.
Friendica Admins hat dies geteilt.
Stefan Ritter
Als Antwort auf ibims • • •ibims mag das.
Stefan Ritter
Als Antwort auf Stefan Ritter • • •Roland Häder🇩🇪
Als Antwort auf ibims • • •mthie
Als Antwort auf ibims • • •ibims mag das.
Roland Häder🇩🇪
Als Antwort auf mthie • • •mthie
Als Antwort auf Roland Häder🇩🇪 • • •Roland Häder🇩🇪
Als Antwort auf mthie • • •Philipp Holzer
Als Antwort auf ibims • • •@ibims Ich kann dir gerne meine Backup Scripts mal zur Verfügung stellen - bzw. wollte ich schon länger ein public git repo machen draus, vllt guter Zeitpunkt
hab ein recht umfangreiches backup.sh script drum rum gebaut, das per .env Variable gesteuert wird und dazu habe ich 4 systemd services definiert (create, prune, compact & check).
ich mach ein mariadbbackup in ein temp-verzeichnis, dadurch ist nämlich das deduplizieren ansatzweise mögluch. per stream hatte ich am anfang direkt - war halt ohne temp-schritt (weniger platzbedarf im temp), dafür hat das depluzieren gar nix gebracht.
ibims mag das.
Friendica Admins hat dies geteilt.
ibims
Als Antwort auf Philipp Holzer • • •Gerne. 😊
Friendica Admins hat dies geteilt.
Roland Häder🇩🇪
Als Antwort auf ibims • • •Friendica Admins hat dies geteilt.
Michael 🇺🇦
Als Antwort auf ibims • • •mariabackup, um eine Kopie einer Datenbank zu erstellen und dannscp, um die Kopie auf einen externen Server zu übertragen.mögen das
elrido und ibims mögen das.
Friendica Admins hat dies geteilt.
elrido
Als Antwort auf Michael 🇺🇦 • •mögen das
xy.. und ibims mögen das.
Friendica Admins hat dies geteilt.