Kapitel 8 · 8.2
Säkerhetskopiera databaser och Docker-volymer på rätt sätt
En databas som körs skriver hela tiden till sina filer. Kopierar du filerna mitt i det arbetet kan din säkerhetskopia bli trasig. Därför gör du först en dump: en ren kopia av databasen i en enda fil.
Var finns dina data?
| Vad | Var |
|---|---|
Dina compose-filer, Caddyfile, .env och mappar som vw-data | /srv/diensten |
Docker-volymer, som uptime-kuma och n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Databasdumpar | /var/backups/db |
| Serverns inställningar | /etc |
Docker sätter namnet på din mapp framför volymens namn: i /srv/diensten blir uptime-kuma alltså diensten_uptime-kuma. Se de riktiga namnen med sudo docker volume ls.
Förberedelseskriptet
Lägg det här i /usr/local/sbin/voor-backup.sh (chmod 700). Det startas av backupskriptet från Säkerhetskopior med restic till en annan plats.
#!/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
Använder du inte WordPress kan du ta bort den delen. Har du en databas utanför Docker fungerar det på samma sätt med mariadb-dump --single-transaction eller pg_dump.
Appar med en SQLite-databas
Vaultwarden, Uptime Kuma och n8n sparar som standard sina data i en SQLite-fil i sin volym eller mapp. Det enklaste och säkraste är att stoppa dem en kort stund under backupen. Det gör backupskriptet från Säkerhetskopior med restic till en annan plats med docker compose stop och därefter docker compose start. Det tar oftast bara en liten stund, och på natten märker ingen det. Vill du undvika avbrott följer du appens egna instruktioner för säkerhetskopiering, till exempel de i Vaultwardens wiki.
Själva databasens mapp (här diensten_wp-db) hoppar du över: för den har du dumpen.
Återställa en app
- Stoppa appen:
sudo docker compose stop vaultwarden. - Hämta tillbaka mappen:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(med variablerna från Säkerhetskopior med restic till en annan plats). - Ersätt mappen med den återställda versionen och starta appen igen.
- En databas återställer du genom att läsa in dumpen, till exempel
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
