Kopie zapasowe
Dumpy bazy danych i procedury odtwarzania dla wdrożenia Sancho na Docker Compose. Stan trwały żyje pod ./data/ obok pliku compose — patrz Dane trwałe.
Automatyczny backup Postgres do S3
Section titled “Automatyczny backup Postgres do S3”Serwis postgres-backup jest opcjonalny — jest zdefiniowany w docker-compose.yaml, ale uruchamia się tylko gdy aktywny jest profil backup. Aby włączyć, dodaj do .env:
COMPOSE_PROFILES=backup # lub backup,garageNastępnie docker compose up -d. Bez tego BACKUP_S3_BUCKET jest ignorowany i żadne dumpy się nie uruchamiają. Jeśli prowadzisz backupy Postgresa poza stackiem (snapshot na poziomie hosta, managed Postgres z repliką itp.) — zostaw profil wyłączony.
Serwis (obraz: prodrigestivill/postgres-backup-local:18-s3) uruchamia pg_dump codziennie o 02:00 UTC, gzipuje dump i wysyła go do S3 przy użyciu tych samych poświadczeń, które są skonfigurowane dla API (S3_ENDPOINT, S3_API_KEY, S3_API_SECRET).
- Cel: bucket
${BACKUP_S3_BUCKET}, dumpy w podkatalogachdaily/,weekly/,monthly/. Dump w formacie custompg_dump(--format=custom) — odtwarzanie przezpg_restore. - Retencja: 28 dziennych, 4 tygodniowe i 4 miesięczne backupy (
BACKUP_KEEP_DAYS=28,BACKUP_KEEP_WEEKS=4,BACKUP_KEEP_MONTHS=4). Starsze dumpy są przycinane automatycznie. - Wymaganie:
BACKUP_S3_BUCKETmusi być ustawiony w.env, a sam bucket musi istnieć (na zewnętrznym S3 — utwórz go z wyprzedzeniem; dla Garage — patrz Aside wyżej). Serwis wpada w crash-loop z czytelnym błędem, jeśli bucket nie istnieje albo poświadczenia są błędne. - Logi:
docker compose logs -f postgres-backup— każdy run raportuje rozmiar, czas trwania i przycinanie.
Aby zweryfikować backup bez czekania do 02:00, uruchom on-demand:
docker compose exec postgres-backup /backup.shBackup ad-hoc / pełny
Section titled “Backup ad-hoc / pełny”# Dump bazy danych do pliku lokalnegodocker compose exec postgres pg_dump -U $PG_USER $PG_DB | gzip > "sancho-$(date +%F).sql.gz"
# Pełne drzewo danych (postgres + rabbitmq + redis + stan caddy)sudo tar -czf "sancho-data-$(date +%F).tar.gz" data/Backupuj również zawartość swojego bucketu S3 (buckety API) — obsługą zajmuje się dostawca storage.
Odtwarzanie
Section titled “Odtwarzanie”Pobierz dump z S3 (działa dowolny klient S3), a następnie zaaplikuj go do bazy:
mc cp <alias>/$BACKUP_S3_BUCKET/daily/sancho-YYYY-MM-DD.sql.gz ./gunzip -c sancho-YYYY-MM-DD.sql.gz | docker compose exec -T postgres pg_restore -U $PG_USER -d $PG_DB --clean --if-existsgunzip -c sancho-YYYY-MM-DD.sql.gz | docker compose exec -T postgres psql -U $PG_USER $PG_DBZatrzymaj stack przed odtworzeniem:
docker compose downsudo tar -xzf sancho-data-YYYY-MM-DD.tar.gzdocker compose up -d