Poglavlje 8 · 8.2
Ispravna izrada sigurnosnih kopija baza podataka i Docker volumena
Baza podataka koja radi neprestano zapisuje u svoje datoteke. Ako te datoteke kopirate usred zapisivanja, Vaša sigurnosna kopija može biti neispravna. Zato najprije napravite dump: urednu kopiju baze podataka u jednoj datoteci.
Gdje se nalaze Vaši podaci?
| Što | Gdje |
|---|---|
Vaše compose datoteke, Caddyfile, .env i mape kao što je vw-data | /srv/diensten |
Docker volumeni, kao što su uptime-kuma i n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Dumpovi baza podataka | /var/backups/db |
| Postavke poslužitelja | /etc |
Docker ispred naziva volumena stavlja naziv Vaše mape: u /srv/diensten tako uptime-kuma postaje diensten_uptime-kuma. Stvarne nazive provjerite naredbom sudo docker volume ls.
Pripremna skripta
Spremite ovo u /usr/local/sbin/voor-backup.sh (chmod 700). Pokreće ju skripta za sigurnosnu kopiju iz članka Sigurnosne kopije s alatom restic na drugo mjesto.
#!/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
Ako ne koristite WordPress, izostavite taj dio. Ako imate bazu podataka izvan Dockera, postupak je jednak uz mariadb-dump --single-transaction ili pg_dump.
Aplikacije sa SQLite bazom podataka
Vaultwarden, Uptime Kuma i n8n svoje podatke prema zadanim postavkama čuvaju u SQLite datoteci u svojem volumenu ili mapi. Najjednostavnije i najsigurnije je da ih tijekom izrade sigurnosne kopije nakratko zaustavite. To čini skripta za sigurnosnu kopiju iz članka Sigurnosne kopije s alatom restic na drugo mjesto naredbom docker compose stop, a zatim docker compose start. To obično traje vrlo kratko; noću to nitko ne primijeti. Ako ne želite prekid rada, slijedite upute za sigurnosnu kopiju same aplikacije, primjerice one u wikiju Vaultwardena.
Mapu same baze podataka (ovdje diensten_wp-db) preskačete: za nju imate dump.
Vraćanje aplikacije
- Zaustavite aplikaciju:
sudo docker compose stop vaultwarden. - Vratite mapu:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(s varijablama iz članka Sigurnosne kopije s alatom restic na drugo mjesto). - Zamijenite mapu vraćenom verzijom i ponovno pokrenite aplikaciju.
- Bazu podataka vraćate učitavanjem dumpa, primjerice
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
