Kapitola 8 · 8.2
Správné zálohování databází a svazků Dockeru
Spuštěná databáze neustále zapisuje do svých souborů. Pokud tyto soubory zkopírujete uprostřed zápisu, může být Vaše záloha poškozená. Proto nejprve vytvořte výpis (dump): čistou kopii databáze v jednom souboru.
Kde jsou Vaše data uložena?
| Co | Kde |
|---|---|
Vaše soubory compose, Caddyfile, .env a složky jako vw-data | /srv/diensten |
Svazky Dockeru, například uptime-kuma a n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Výpisy databází | /var/backups/db |
| Nastavení serveru | /etc |
Docker před název svazku přidává název Vaší složky: v /srv/diensten se tedy z uptime-kuma stane diensten_uptime-kuma. Skutečné názvy zobrazíte příkazem sudo docker volume ls.
Přípravný skript
Uložte tento skript do /usr/local/sbin/voor-backup.sh (chmod 700). Spouští ho zálohovací skript z článku Zálohy pomocí restic na jiné místo.
#!/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
Pokud WordPress nepoužíváte, tuto část vynechte. Máte-li databázi mimo Docker, postupujte stejně pomocí mariadb-dump --single-transaction nebo pg_dump.
Aplikace s databází SQLite
Vaultwarden, Uptime Kuma a n8n ve výchozím nastavení ukládají svá data do souboru SQLite ve svém svazku nebo složce. Nejjednodušší a nejbezpečnější je na dobu zálohování je krátce zastavit. To zajišťuje zálohovací skript z článku Zálohy pomocí restic na jiné místo pomocí docker compose stop a poté docker compose start. Obvykle to trvá jen chvilku; v noci si toho nikdo nevšimne. Pokud nechcete žádné přerušení, řiďte se pokyny k zálohování přímo od dané aplikace, například těmi na wiki Vaultwardenu.
Samotnou složku databáze (zde diensten_wp-db) vynechte: k tomu slouží výpis.
Obnovení aplikace
- Zastavte aplikaci:
sudo docker compose stop vaultwarden. - Obnovte složku:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(s proměnnými z článku Zálohy pomocí restic na jiné místo). - Nahraďte složku obnovenou verzí a aplikaci znovu spusťte.
- Databázi obnovíte načtením výpisu, například
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
