Κεφάλαιο 8 · 8.2
Σωστή συμπερίληψη βάσεων δεδομένων και Docker volumes στα αντίγραφα ασφαλείας
Μια βάση δεδομένων που λειτουργεί γράφει συνεχώς στα αρχεία της. Αν αντιγράψετε αυτά τα αρχεία στη μέση αυτής της διαδικασίας, το αντίγραφο ασφαλείας σας μπορεί να είναι κατεστραμμένο. Γι' αυτό δημιουργείτε πρώτα ένα dump: ένα καθαρό αντίγραφο της βάσης δεδομένων σε ένα μόνο αρχείο.
Πού βρίσκονται τα δεδομένα σας;
| Τι | Πού |
|---|---|
Τα αρχεία compose, το Caddyfile, το .env και φάκελοι όπως vw-data | /srv/diensten |
Docker volumes, όπως uptime-kuma και n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Dump βάσεων δεδομένων | /var/backups/db |
| Ρυθμίσεις του server | /etc |
Το Docker προσθέτει το όνομα του φακέλου σας μπροστά από το όνομα του volume: στο /srv/diensten το uptime-kuma γίνεται επομένως diensten_uptime-kuma. Δείτε τα πραγματικά ονόματα με την εντολή sudo docker volume ls.
Το script προετοιμασίας
Τοποθετήστε το στο /usr/local/sbin/voor-backup.sh (chmod 700). Εκκινείται από το script αντιγράφων ασφαλείας του άρθρου Αντίγραφα ασφαλείας με restic σε άλλη τοποθεσία.
#!/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
Αν δεν χρησιμοποιείτε WordPress, παραλείψτε αυτό το τμήμα. Αν έχετε βάση δεδομένων εκτός Docker, η διαδικασία είναι ακριβώς η ίδια με το mariadb-dump --single-transaction ή το pg_dump.
Εφαρμογές με βάση δεδομένων SQLite
Τα Vaultwarden, Uptime Kuma και n8n αποθηκεύουν από προεπιλογή τα δεδομένα τους σε ένα αρχείο SQLite μέσα στο volume ή στον φάκελό τους. Η απλούστερη και ασφαλέστερη λύση είναι να τα σταματήσετε για λίγο κατά τη δημιουργία του αντιγράφου ασφαλείας. Αυτό το κάνει το script αντιγράφων ασφαλείας του άρθρου Αντίγραφα ασφαλείας με restic σε άλλη τοποθεσία με το docker compose stop και στη συνέχεια το docker compose start. Συνήθως διαρκεί ελάχιστα· τη νύχτα δεν το αντιλαμβάνεται κανείς. Αν δεν θέλετε καμία διακοπή, ακολουθήστε τις οδηγίες αντιγράφων ασφαλείας της ίδιας της εφαρμογής, όπως αυτές στο wiki του Vaultwarden.
Τον φάκελο της ίδιας της βάσης δεδομένων (εδώ diensten_wp-db) τον παραλείπετε: γι' αυτόν έχετε το dump.
Επαναφορά μιας εφαρμογής
- Σταματήστε την εφαρμογή:
sudo docker compose stop vaultwarden. - Ανακτήστε τον φάκελο:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(με τις μεταβλητές του άρθρου Αντίγραφα ασφαλείας με restic σε άλλη τοποθεσία). - Αντικαταστήστε τον φάκελο με την ανακτημένη έκδοση και εκκινήστε ξανά την εφαρμογή.
- Μια βάση δεδομένων την επαναφέρετε φορτώνοντας το dump, για παράδειγμα με
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
