Capitolul 8 · 8.2
Cum includeți corect bazele de date și volumele Docker în copia de rezervă
O bază de date care rulează scrie permanent în fișierele sale. Dacă copiați aceste fișiere în timp ce se scrie în ele, copia de rezervă poate fi coruptă. De aceea, creați mai întâi un dump: o copie curată a bazei de date într-un singur fișier.
Unde se află datele dumneavoastră?
| Ce | Unde |
|---|---|
Fișierele compose, Caddyfile, .env și directoare precum vw-data | /srv/diensten |
Volume Docker, precum uptime-kuma și n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Dump-uri ale bazelor de date | /var/backups/db |
| Setările serverului | /etc |
Docker adaugă numele directorului dumneavoastră în fața numelui volumului: în /srv/diensten, uptime-kuma devine astfel diensten_uptime-kuma. Verificați numele reale cu sudo docker volume ls.
Scriptul de pregătire
Puneți acest conținut în /usr/local/sbin/voor-backup.sh (chmod 700). Scriptul este pornit de scriptul de backup din Copii de siguranță cu restic într-o altă locație.
#!/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
Dacă nu folosiți WordPress, omiteți acea parte. Dacă aveți o bază de date în afara Docker, procedați la fel cu mariadb-dump --single-transaction sau pg_dump.
Aplicații cu o bază de date SQLite
Vaultwarden, Uptime Kuma și n8n își păstrează implicit datele într-un fișier SQLite din volumul sau directorul lor. Cea mai simplă și sigură variantă este să le opriți pentru scurt timp în timpul backupului. Scriptul de backup din Copii de siguranță cu restic într-o altă locație face acest lucru cu docker compose stop și apoi docker compose start. De obicei durează doar puțin; noaptea nu observă nimeni. Dacă nu doriți nicio întrerupere, urmați instrucțiunile de backup ale aplicației, de exemplu cele din wiki-ul Vaultwarden.
Directorul bazei de date propriu-zise (aici diensten_wp-db) îl omiteți: pentru acesta aveți dump-ul.
Restaurarea unei aplicații
- Opriți aplicația:
sudo docker compose stop vaultwarden. - Recuperați directorul:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(cu variabilele din Copii de siguranță cu restic într-o altă locație). - Înlocuiți directorul cu versiunea restaurată și porniți din nou aplicația.
- O bază de date o restaurați importând dump-ul, de exemplu
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
