8 skyrius · 8.2
Kaip tinkamai sukurti duomenų bazių ir Docker tomų atsargines kopijas
Veikianti duomenų bazė nuolat rašo į savo failus. Jei šiuos failus nukopijuosite rašymo metu, atsarginė kopija gali būti sugadinta. Todėl pirmiausia sukurkite iškeltinę kopiją (dump): tvarkingą duomenų bazės kopiją viename faile.
Kur laikomi Jūsų duomenys?
| Kas | Kur |
|---|---|
Jūsų compose failai, Caddyfile, .env ir aplankai, pavyzdžiui, vw-data | /srv/diensten |
Docker tomai, pavyzdžiui, uptime-kuma ir n8n-data | /var/lib/docker/volumes/diensten_<naam>/_data |
| Duomenų bazių iškeltinės kopijos | /var/backups/db |
| Serverio nustatymai | /etc |
Docker prie tomo pavadinimo prideda Jūsų aplanko pavadinimą: aplanke /srv/diensten tomas uptime-kuma tampa diensten_uptime-kuma. Tikrus pavadinimus galite peržiūrėti komanda sudo docker volume ls.
Parengiamasis scenarijus
Įrašykite šį scenarijų į /usr/local/sbin/voor-backup.sh (chmod 700). Jį paleidžia atsarginių kopijų scenarijus iš Atsarginės kopijos su restic kitoje vietoje.
#!/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
Jei nenaudojate WordPress, šią dalį praleiskite. Jei duomenų bazė veikia ne Docker aplinkoje, tai daroma taip pat, naudojant mariadb-dump --single-transaction arba pg_dump.
Programos su SQLite duomenų baze
Vaultwarden, Uptime Kuma ir n8n pagal numatytuosius nustatymus savo duomenis laiko SQLite faile, esančiame jų tome ar aplanke. Paprasčiausia ir saugiausia: atsarginės kopijos kūrimo metu jas trumpam sustabdyti. Tai atlieka atsarginių kopijų scenarijus iš Atsarginės kopijos su restic kitoje vietoje komanda docker compose stop, o po to docker compose start. Paprastai tai trunka vos akimirką, o naktį niekas to nepastebi. Jei nenorite jokios pertraukos, vadovaukitės pačios programos atsarginių kopijų nurodymais, pavyzdžiui, pateiktais Vaultwarden wiki.
Pačios duomenų bazės aplanką (čia diensten_wp-db) praleiskite: tam turite iškeltinę kopiją.
Programos atkūrimas
- Sustabdykite programą:
sudo docker compose stop vaultwarden. - Atkurkite aplanką:
sudo restic restore latest --target /tmp/terug --include /srv/diensten/vw-data(su kintamaisiais iš Atsarginės kopijos su restic kitoje vietoje). - Pakeiskite aplanką atkurta versija ir vėl paleiskite programą.
- Duomenų bazę atkursite įkeldami iškeltinę kopiją, pavyzdžiui,
docker compose exec -T wp-db sh -c 'mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' < wordpress.sql.
