Nodaļa 8 · 8.2
Pareizi iekļaut datubāzes un Docker sējumus dublējumā
Datubāze, kas darbojas, nepārtraukti raksta savos failos. Ja Jūs kopējat šos failus darbības vidū, Jūsu dublējums var būt bojāts. Tāpēc vispirms izveidojiet izmeti: kārtīgu datubāzes kopiju vienā failā.
Kur atrodas Jūsu dati?
| Kas | Kur |
|---|---|
Jūsu compose faili, Caddyfile, .env un mapes, piemēram, vw-data | /srv/diensten |
Docker sējumi, piemēram, uptime-kuma un n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Datubāzu izmetes | /var/backups/db |
| Servera iestatījumi | /etc |
Docker pievieno Jūsu mapes nosaukumu sējuma nosaukuma priekšā: mapē /srv/diensten sējums uptime-kuma kļūst par diensten_uptime-kuma. Īstos nosaukumus varat apskatīt ar sudo docker volume ls.
Sagatavošanas skripts
Saglabājiet šo failā /usr/local/sbin/voor-backup.sh (chmod 700). To palaiž dublēšanas skripts no Rezerves kopijas ar restic uz citu vietu.
#!/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
Ja Jūs neizmantojat WordPress, izlaidiet šo daļu. Ja Jums ir datubāze ārpus Docker, rīkojieties tāpat ar mariadb-dump --single-transaction vai pg_dump.
Lietotnes ar SQLite datubāzi
Vaultwarden, Uptime Kuma un n8n pēc noklusējuma glabā savus datus SQLite failā savā sējumā vai mapē. Vienkāršākais un drošākais risinājums: dublēšanas laikā uz brīdi apturiet tās. To dara dublēšanas skripts no Rezerves kopijas ar restic uz citu vietu ar docker compose stop un pēc tam docker compose start. Parasti tas aizņem tikai mirkli; naktī to neviens nepamana. Ja nevēlaties pārtraukumu, ievērojiet pašas lietotnes dublēšanas norādījumus, piemēram, Vaultwarden wiki.
Pašas datubāzes mapi (šeit diensten_wp-db) Jūs izlaižat: tam Jums ir izmete.
Lietotnes atjaunošana
- Apturiet lietotni:
sudo docker compose stop vaultwarden. - Atjaunojiet mapi:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(ar mainīgajiem no Rezerves kopijas ar restic uz citu vietu). - Aizstājiet mapi ar atjaunoto versiju un atkal palaidiet lietotni.
- Datubāzi atjaunojiet, ielasot izmeti, piemēram,
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
