Глава 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 |
| Настройки на сървъра | /etc |
Docker поставя името на Вашата папка пред името на volume: в /srv/diensten uptime-kuma става diensten_uptime-kuma. Вижте истинските имена с sudo docker volume ls.
Скриптът за подготовка
Поставете това в /usr/local/sbin/voor-backup.sh (chmod 700). Той се стартира от скрипта за архивиране от Архивиране с 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 или папка. Най-лесният и най-сигурният начин е да ги спрете за кратко по време на архивирането. Това прави скриптът за архивиране от Архивиране с 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.
