Markus Michalski FAQ

restic-backup-suite: Datenbank-Dumps

Datenbank-Dumps in restic-backup-suite: Docker MariaDB/MySQL, Docker PostgreSQL und native MySQL/MariaDB, Eintragsformat, Passwort-Variable, Dateinamen und Fehlerverhalten.

English Version

Zurück zur Übersicht


Datenbank-Dumps

Vor dem Datei-Backup erzeugt backup.sh SQL-Dumps in einem temporären Verzeichnis /tmp/restic-db-dump-XXXXXX (Rechte 700). Dieses Verzeichnis wird zusammen mit BACKUP_PATHS gesichert und beim Beenden des Scripts gelöscht. Die Dumps laufen in dieser Reihenfolge: nativ, Docker MariaDB/MySQL, Docker PostgreSQL.

Mit restic-backup --dump-only kannst Du die Dumps ohne Backup testen.

Docker MariaDB und MySQL

DOCKER_MARIADB_CONTAINERS=(
    "my-mysql:root:app_db"
    "new-mariadb:root:wiki_db:MARIADB_ROOT_PASSWORD"
    "custom-db:root:mydb:DB_ROOT_PASS"
)

Format: container_name:db_user:db_name[:passwort_env_var]

Feld Bedeutung
container_name Name eines laufenden Containers (exakter Treffer in docker ps)
db_user Datenbank-Benutzer
db_name Datenbank, die gedumpt wird (eine Datenbank pro Eintrag)
passwort_env_var Name der Umgebungsvariable im Container, die das Passwort enthält. Standard: MYSQL_ROOT_PASSWORD. Erlaubt sind nur Namen aus Buchstaben, Ziffern und Unterstrich, sonst wird der Eintrag mit Fehler übersprungen

Ablauf pro Eintrag:

Läuft der Container nicht, überspringt das Script den Eintrag mit einer Warnung. Schlägt der Dump fehl, wird die unvollständige Datei gelöscht und ein Fehler geloggt.

Docker PostgreSQL

DOCKER_POSTGRES_CONTAINERS=(
    "my-postgres:postgres:app_db"
)

Format: container_name:db_user:db_name

Das Script führt im Container pg_dump -U <db_user> --no-password <db_name> aus. Das Passwort kommt aus der Variable POSTGRES_PASSWORD des Containers, sie muss dort gesetzt sein. Ergebnisdatei: <container>_<db_name>.sql.

Nativ (ohne Docker)

MYSQL_BACKUP_ENABLED=true
MYSQL_EXCLUDE_DBS="information_schema performance_schema mysql sys"

Bei true listet das Script alle Datenbanken des Hosts (SHOW DATABASES) und dumpt jede einzeln nach <db>.sql. Es verwendet mariadb-dump beziehungsweise mariadb, wenn vorhanden, sonst mysqldump und mysql. Fehlt ein Programm, überspringt das Script den nativen Dump mit einer Warnung.

Fehlerverhalten

Ein fehlgeschlagener Dump wird geloggt, bricht das Backup aber nicht ab. Läuft danach restic backup erfolgreich, endet der Lauf mit Exit-Code 0 und schreibt die Marker-Datei, auch wenn ein Dump fehlt. Prüfe das Log, wenn Dumps wichtig sind, oder teste neue Einträge vorher mit --dump-only. Dort führt ein fehlgeschlagener Dump zu Exit-Code 1.

Wiederherstellung

Die Dumps lassen sich mit restic-restore einspielen. Beachte die Einschränkungen auf der Seite Restore.