8. fejezet · 8.2
Adatbázisok és Docker-kötetek helyes mentése
Egy futó adatbázis folyamatosan ír a fájljaiba. Ha ezeket a fájlokat menet közben másolja le, a mentés sérült lehet. Ezért először egy dumpot készítünk: az adatbázis rendezett másolatát egyetlen fájlban.
Hol vannak az adatai?
| Mi | Hol |
|---|---|
A compose-fájlok, a Caddyfile, a .env és az olyan mappák, mint a vw-data | /srv/diensten |
Docker-kötetek, például uptime-kuma és n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Adatbázisdumpok | /var/backups/db |
| A szerver beállításai | /etc |
A Docker a mappa nevét a kötet neve elé teszi: a /srv/diensten mappában így a uptime-kuma kötetből diensten_uptime-kuma lesz. A valódi neveket a sudo docker volume ls paranccsal tekintheti meg.
Az előkészítő szkript
Helyezze el ezt a /usr/local/sbin/voor-backup.sh fájlban (chmod 700). A(z) Biztonsági mentés a restic segítségével egy másik helyre cikkben szereplő mentési szkript indítja el.
#!/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
Ha nem használ WordPresst, hagyja ki ezt a részt. Ha a Dockeren kívül fut egy adatbázisa, ugyanígy járhat el a mariadb-dump --single-transaction vagy a pg_dump használatával.
SQLite-adatbázist használó alkalmazások
A Vaultwarden, az Uptime Kuma és az n8n alapértelmezés szerint egy SQLite-fájlban tárolja az adatait a kötetében vagy a mappájában. A legegyszerűbb és legbiztonságosabb megoldás: a mentés idejére rövid időre állítsa le őket. Ezt végzi el a(z) Biztonsági mentés a restic segítségével egy másik helyre cikkben szereplő mentési szkript a docker compose stop, majd a docker compose start paranccsal. Ez általában csak rövid ideig tart, éjszaka senki sem veszi észre. Ha nem szeretne megszakítást, kövesse magának az alkalmazásnak a mentési útmutatóját, például a Vaultwarden wikijében találhatót.
Magának az adatbázisnak a mappáját (itt diensten_wp-db) kihagyhatja: arra ott van a dump.
Egy alkalmazás visszaállítása
- Állítsa le az alkalmazást:
sudo docker compose stop vaultwarden. - Állítsa vissza a mappát:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(a(z) Biztonsági mentés a restic segítségével egy másik helyre cikkben szereplő változókkal). - Cserélje le a mappát a visszaállított változatra, majd indítsa újra az alkalmazást.
- Egy adatbázist a dump beolvasásával állíthat vissza, például:
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
