Kapitel 8 · 8.2
Sådan tager du databaser og Docker-volumes korrekt med i backuppen
En database, der kører, skriver hele tiden i sine filer. Kopierer du filerne midt i det hele, kan din backup være i stykker. Derfor laver du først et dump: en ren kopi af databasen i én fil.
Hvor ligger dine data?
| Hvad | Hvor |
|---|---|
Dine compose-filer, Caddyfile, .env og mapper som vw-data | /srv/diensten |
Docker-volumes, som uptime-kuma og n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Databasedumps | /var/backups/db |
| Serverens indstillinger | /etc |
Docker sætter navnet på din mappe foran navnet på volumet: i /srv/diensten bliver uptime-kuma altså til diensten_uptime-kuma. Se de rigtige navne med sudo docker volume ls.
Forberedelsesscriptet
Læg dette i /usr/local/sbin/voor-backup.sh (chmod 700). Det startes af backupscriptet fra Backup med restic til et andet sted.
#!/bin/sh
set -e
mkdir -p /var/backups/db
chmod 700 /var/backups/db
cd /srv/diensten
# WordPress-database (MariaDB) als dump
docker compose exec -T wp-db sh -c \
'mariadb-dump --single-transaction -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' \
> /var/backups/db/wordpress.sql
Bruger du ikke WordPress, så udelad den del. Har du en database uden for Docker, fungerer det på samme måde med mariadb-dump --single-transaction eller pg_dump.
Apps med en SQLite-database
Vaultwarden, Uptime Kuma og n8n gemmer som standard deres data i en SQLite-fil i deres volume eller mappe. Det nemmeste og sikreste er at stoppe dem kort under backuppen. Det gør backupscriptet fra Backup med restic til et andet sted med docker compose stop og bagefter docker compose start. Det tager som regel kun et øjeblik, og om natten opdager ingen det. Vil du undgå afbrydelser, så følg appens egne anvisninger til backup, som dem i Vaultwardens wiki.
Selve databasens mappe (her diensten_wp-db) springer du over: til det har du dumpet.
Gendan en app
- Stop appen:
sudo docker compose stop vaultwarden. - Hent mappen tilbage:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(med variablerne fra Backup med restic til et andet sted). - Erstat mappen med den gendannede version, og start appen igen.
- En database gendanner du ved at indlæse dumpet, for eksempel
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
