# 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