nordabiz/.claude/commands/backup.md
Maciej Pienczyn 110d971dca
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
feat: migrate prod docs to OVH VPS + UTC→Warsaw timezone in all templates
Production moved from on-prem VM 249 (10.22.68.249) to OVH VPS
(57.128.200.27, inpi-vps-waw01). Updated ALL documentation, slash
commands, memory files, architecture docs, and deploy procedures.

Added |local_time Jinja filter (UTC→Europe/Warsaw) and converted
155 .strftime() calls across 71 templates so timestamps display
in Polish timezone regardless of server timezone.

Also includes: created_by_id tracking, abort import fix, ICS
calendar fix for missing end times, Pros Poland data cleanup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:41:53 +02:00

168 lines
5.0 KiB
Markdown

# NordaBiz Backup Operations
Wykonaj backup bazy danych i konfiguracji projektu NordaBiz.
## Argument: $ARGUMENTS
Opcjonalny argument określa typ backupu:
- `/backup` - pełny backup (DB + pliki)
- `/backup db` - tylko baza danych
- `/backup snapshot` - snapshot VM w Proxmox
- `/backup restore` - przywracanie (interaktywne)
- `/backup status` - sprawdź status automatycznych backupów
## System automatycznych backupów
### Harmonogram (cron na OVH VPS inpi-vps-waw01)
| Typ | Częstotliwość | Godzina | Retencja | Lokalizacja |
|-----|---------------|---------|----------|-------------|
| Hourly | Co godzinę | :00 | 24h | `/var/backups/nordabiz/hourly/` |
| Daily | Codziennie | 02:00 | 30 dni | `/var/backups/nordabiz/daily/` |
| Offsite | Codziennie | 04:00 | 30 dni | PBS (10.22.68.127) |
| Config | Tygodniowo | Niedziela 03:00 | 4 tyg | `/var/backups/nordabiz/config/` |
### Sprawdzenie statusu backupów
```bash
# Ostatnie backupy hourly
ssh maciejpi@57.128.200.27 "ls -lt /var/backups/nordabiz/hourly/ | head -5"
# Ostatnie backupy daily
ssh maciejpi@57.128.200.27 "ls -lt /var/backups/nordabiz/daily/ | head -5"
# Sprawdź offsite (PBS)
ssh maciejpi@10.22.68.127 "ls -lt /backup/nordabiz/daily/ | head -5"
# Rozmiar backupów
ssh maciejpi@57.128.200.27 "du -sh /var/backups/nordabiz/*"
```
## Kroki do wykonania:
### 1. Backup lokalnej bazy PostgreSQL (DEV via Docker)
```bash
mkdir -p backups
docker exec nordabiz-postgres pg_dump -U nordabiz_app nordabiz > "backups/dev_$(date +%Y%m%d_%H%M%S).sql"
```
### 2. Backup produkcyjnej bazy PostgreSQL
Eksport do lokalnego:
```bash
ssh maciejpi@57.128.200.27 "sudo -u postgres pg_dump nordabiz" > "backups/prod_$(date +%Y%m%d_%H%M%S).sql"
```
Lub backup na serwerze:
```bash
ssh maciejpi@57.128.200.27 "sudo -u postgres pg_dump -Fc nordabiz > /tmp/backup_$(date +%Y%m%d_%H%M%S).dump"
```
### 3. Backup plików konfiguracyjnych
```bash
mkdir -p backups/config_$(date +%Y%m%d)
cp .env backups/config_$(date +%Y%m%d)/dev.env
ssh maciejpi@57.128.200.27 "cat /var/www/nordabiznes/.env" > backups/config_$(date +%Y%m%d)/prod.env
ssh maciejpi@57.128.200.27 "cat /etc/nginx/sites-available/nordabiznes" > backups/config_$(date +%Y%m%d)/nginx.conf
```
### 4. Snapshot VM w Proxmox
Użyj skill `proxmox-manager`:
```
Utwórz snapshot VM OVH VPS inpi-vps-waw01 (OVH VPS) z opisem "Backup przed [operacja]"
```
Lub ręcznie:
```bash
ssh root@10.22.68.10 "qm snapshot 249 backup_$(date +%Y%m%d) --description 'Automatyczny backup'"
```
### 5. Lista istniejących backupów
Lokalne:
```bash
ls -la backups/*.sql 2>/dev/null
```
Snapshoty VM (użyj skill proxmox-manager):
```
Pokaż snapshoty OVH VPS
```
### 6. Przywracanie z backupu
#### Szybkie przywracanie (skrypt DR)
```bash
ssh maciejpi@57.128.200.27 "sudo /var/www/nordabiznes/scripts/dr-restore.sh /var/backups/nordabiz/hourly/nordabiz_YYYYMMDD_HH.dump"
```
#### DEV (Docker PostgreSQL):
```bash
docker exec -i nordabiz-postgres psql -U nordabiz_app -d nordabiz < backups/dev_YYYYMMDD_HHMMSS.sql
```
#### PROD (PostgreSQL):
```bash
cat backups/prod_YYYYMMDD_HHMMSS.sql | ssh maciejpi@57.128.200.27 "sudo -u postgres psql nordabiz"
```
#### Rollback VM:
Użyj skill `proxmox-manager`:
```
Przywróć OVH VPS ze snapshotu backup_YYYYMMDD
```
## Konfiguracja cron (na serwerze PROD)
### Plik: `/etc/cron.d/nordabiz-backup`
```bash
# Backup co godzinę (retencja 24h)
0 * * * * postgres pg_dump -Fc nordabiz > /var/backups/nordabiz/hourly/nordabiz_$(date +\%Y\%m\%d_\%H).dump 2>> /var/log/nordabiznes/backup.log
# Backup dzienny o 2:00 (retencja 30 dni)
0 2 * * * postgres pg_dump -Fc nordabiz > /var/backups/nordabiz/daily/nordabiz_$(date +\%Y\%m\%d).dump 2>> /var/log/nordabiznes/backup.log
# Cleanup starych hourly (24h)
0 3 * * * root find /var/backups/nordabiz/hourly -name "*.dump" -mtime +1 -delete
# Cleanup starych daily (30 dni)
0 3 * * * root find /var/backups/nordabiz/daily -name "*.dump" -mtime +30 -delete
```
### Plik: `/etc/cron.d/nordabiz-offsite`
```bash
# Sync daily backups do PBS o 4:00
0 4 * * * root rsync -avz --delete /var/backups/nordabiz/daily/ maciejpi@10.22.68.127:/backup/nordabiz/daily/ 2>> /var/log/nordabiznes/backup.log
# Sync config do PBS o 4:30
30 4 * * * root rsync -avz /var/backups/nordabiz/config/ maciejpi@10.22.68.127:/backup/nordabiz/config/ 2>> /var/log/nordabiznes/backup.log
```
## Disaster Recovery
**Pełna dokumentacja:** `docs/DR-PLAYBOOK.md`
### Metryki SLA
- **RTO:** 30-60 min
- **RPO:** 1 godzina
### Skrypt restore
```bash
sudo /var/www/nordabiznes/scripts/dr-restore.sh /path/to/backup.dump
```
## Przechowywanie:
- Lokalne DEV: `./backups/` (dodane do .gitignore)
- Lokalne PROD: `/var/backups/nordabiz/`
- Offsite: PBS (10.22.68.127:/backup/nordabiz/)
- Proxmox: snapshoty VM
## Uwagi:
- ZAWSZE rób backup przed większymi zmianami
- Testuj przywracanie okresowo (co kwartał)
- Snapshoty VM są najszybsze do rollbacku
- PostgreSQL dump jest przenośny między środowiskami
- DEV używa Docker PostgreSQL na localhost:5433
- PROD używa PostgreSQL na 57.128.200.27:5432
Data aktualizacji: 2026-02-02