Kapitola 8 · 8.2
Správne zálohovanie databáz a zväzkov Docker
Spustená databáza neustále zapisuje do svojich súborov. Ak tieto súbory skopírujete uprostred zápisu, vaša záloha môže byť poškodená. Preto najprv vytvorte výpis (dump): čistú kópiu databázy v jednom súbore.
Kde sú uložené vaše údaje?
| Čo | Kde |
|---|---|
Vaše súbory compose, Caddyfile, .env a priečinky ako vw-data | /srv/diensten |
Zväzky Docker, napríklad uptime-kuma a n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Výpisy databáz | /var/backups/db |
| Nastavenia servera | /etc |
Docker pridáva pred názov zväzku názov vášho priečinka: v /srv/diensten sa teda z uptime-kuma stane diensten_uptime-kuma. Skutočné názvy zobrazíte príkazom sudo docker volume ls.
Prípravný skript
Uložte tento skript do /usr/local/sbin/voor-backup.sh (chmod 700). Spúšťa ho zálohovací skript z článku Zálohy pomocou restic na iné miesto.
#!/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
Ak nepoužívate WordPress, túto časť vynechajte. Ak máte databázu mimo Dockeru, postupujte rovnako pomocou mariadb-dump --single-transaction alebo pg_dump.
Aplikácie s databázou SQLite
Vaultwarden, Uptime Kuma a n8n ukladajú svoje údaje štandardne do súboru SQLite vo svojom zväzku alebo priečinku. Najjednoduchšie a najbezpečnejšie je počas zálohovania ich na chvíľu zastaviť. To robí zálohovací skript z článku Zálohy pomocou restic na iné miesto pomocou docker compose stop a potom docker compose start. Zvyčajne to trvá len chvíľu; v noci si to nikto nevšimne. Ak nechcete žiadne prerušenie, riaďte sa pokynmi na zálohovanie priamo od aplikácie, napríklad tými vo wiki Vaultwardenu.
Priečinok samotnej databázy (tu diensten_wp-db) preskočte: na to máte výpis.
Obnovenie aplikácie
- Zastavte aplikáciu:
sudo docker compose stop vaultwarden. - Obnovte priečinok:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(s premennými z článku Zálohy pomocou restic na iné miesto). - Nahraďte priečinok obnovenou verziou a aplikáciu znova spustite.
- Databázu obnovíte načítaním výpisu, napríklad
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
