Kapittel 8 · 8.2
Ta med databaser og Docker-volumer på riktig måte
En database som kjører, skriver hele tiden til filene sine. Kopierer du disse filene midt i skrivingen, kan backupen din bli ødelagt. Derfor lager du først en dump: en ryddig kopi av databasen i én fil.
Hvor ligger dataene dine?
| Hva | Hvor |
|---|---|
Compose-filene dine, Caddyfile, .env og mapper som vw-data | /srv/diensten |
Docker-volumer, som uptime-kuma og n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Databasedumper | /var/backups/db |
| Innstillinger for serveren | /etc |
Docker setter navnet på mappen din foran navnet på volumet: i /srv/diensten blir uptime-kuma altså diensten_uptime-kuma. Se de faktiske navnene med sudo docker volume ls.
Forberedelsesskriptet
Legg dette i /usr/local/sbin/voor-backup.sh (chmod 700). Det startes av backupskriptet fra Sikkerhetskopier med restic til et annet 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
Bruker du ikke WordPress, kan du droppe den delen. Har du en database utenfor Docker, gjør du det på samme måte med mariadb-dump --single-transaction eller pg_dump.
Apper med en SQLite-database
Vaultwarden, Uptime Kuma og n8n lagrer dataene sine som standard i en SQLite-fil i volumet eller mappen sin. Det enkleste og tryggeste er å stoppe dem en kort stund under backupen. Det gjør backupskriptet fra Sikkerhetskopier med restic til et annet sted med docker compose stop og deretter docker compose start. Det tar som regel bare et øyeblikk, og om natten merker ingen det. Vil du unngå avbrudd, følger du backupinstruksjonene til selve appen, for eksempel de i wikien til Vaultwarden.
Mappen til selve databasen (her diensten_wp-db) hopper du over: til det har du dumpen.
Gjenopprette en app
- Stopp appen:
sudo docker compose stop vaultwarden. - Hent tilbake mappen:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(med variablene fra Sikkerhetskopier med restic til et annet sted). - Erstatt mappen med den gjenopprettede versjonen og start appen igjen.
- En database gjenoppretter du ved å lese inn dumpen, for eksempel
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
