59 lines
1.9 KiB
Markdown
59 lines
1.9 KiB
Markdown
# THECR3W-DEV — STRATEGIA BACKUPU I ODTWARZANIA AWARYJNEGO (DISASTER RECOVERY)
|
|
## Wersja: 1.0.0 | Data: 2026-10-31
|
|
|
|
---
|
|
|
|
## 1. Cele RPO i RTO
|
|
|
|
- **RPO (Recovery Point Objective):** Maksymalnie 6 godzin dla bazy danych PostgreSQL.
|
|
- **RTO (Recovery Time Objective):** Maksymalnie 30 minut na pełne przywrócenie środowiska kontenerowego na serwerze Netcup VPS.
|
|
|
|
---
|
|
|
|
## 2. Zakres Backupu
|
|
|
|
1. **Baza Danych PostgreSQL (`thecr3w-postgres`):**
|
|
- Wszystkie tabele metadanych wydań, kluczy, manifestów wdrożeniowych oraz dziennik audytowy `audit_events`.
|
|
2. **Konfiguracja Serwera i Reverse Proxy:**
|
|
- `/opt/proxy/Caddyfile` oraz certyfikaty TLS.
|
|
- Zmienne środowiskowe `.env` dla usług TheCr3w-dev.
|
|
3. **Magazyn Artefaktów (Cloudflare R2):**
|
|
- Bucket `thecr3w-app` posiada wbudowaną redundancję geograficzną w chmurze Cloudflare.
|
|
|
|
---
|
|
|
|
## 3. Procedura Wykonywania Kopii Zapasowej (Automatyczny Cron)
|
|
|
|
Skrypt wykonywany codziennie o godzinie 02:00 UTC:
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
|
|
BACKUP_DIR="/opt/backups/thecr3w"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
mkdir -p "${BACKUP_DIR}"
|
|
|
|
# 1. Zrzut bazy PostgreSQL bez zatrzymywania kontenera
|
|
docker exec -t thecr3w-postgres pg_dump -U thecr3w_user thecr3w_db | gzip > "${BACKUP_DIR}/thecr3w_db_${TIMESTAMP}.sql.gz"
|
|
|
|
# 2. Kopia Caddyfile
|
|
cp /opt/proxy/Caddyfile "${BACKUP_DIR}/Caddyfile_${TIMESTAMP}"
|
|
|
|
# 3. Retencja: usuwanie kopii starszych niż 30 dni
|
|
find "${BACKUP_DIR}" -type f -name "*.sql.gz" -mtime +30 -delete
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Procedura Odtwarzania Awaryjnego (Restore Runbook)
|
|
|
|
```bash
|
|
# 1. Uruchomienie nowej bazy
|
|
docker compose -f /opt/thecr3w/docker-compose.prod.yml up -d thecr3w-postgres
|
|
|
|
# 2. Przywrócenie danych ze skompresowanego zrzutu SQL
|
|
gunzip -c /opt/backups/thecr3w/thecr3w_db_YYYYMMDD_HHMMSS.sql.gz | docker exec -i thecr3w-postgres psql -U thecr3w_user -d thecr3w_db
|
|
|
|
# 3. Uruchomienie backendu i frontendu
|
|
docker compose -f /opt/thecr3w/docker-compose.prod.yml up -d
|
|
```
|