4.5 KiB
4.5 KiB
PostgreSQL Backup - Tower
Dva samostatné PostgreSQL Docker kontejnery na Tower (192.168.1.76).
Instance 1 — postgresql18 (hlavní)
| Parametr | Hodnota |
|---|---|
| Docker kontejner | postgresql18 |
| Image | postgres:18 |
| Port | 5432 (host) → 5432 (container) |
| User | vladimir.buzalka |
| Password | Vlado7309208104++ |
| Data path (Unraid) | /mnt/user/appdata/postgresql18 |
| Obsah | Hlavní aplikační databáze |
| Záloha | /mnt/user/Backup/Critical/PostgreSQLBackup/tower/YYYY-MM-DD_HHMM/all_databases.sql.gz |
| Retence | 7 dní / posledních 7 záloh |
| User Script (Unraid) | PostgreSQLBackup |
| Skript | postgresqlbackup_with_gzip.sh |
| První test | 2026-05-23 06:59:51 → 07:03:12 (cca 3 min), dump 3.3 GB |
Instance 2 — PostgreSQL_Immich (Immich)
| Parametr | Hodnota |
|---|---|
| Docker kontejner | PostgreSQL_Immich |
| Image | tensorchord/pgvecto-rs:pg16-v0.2.0 (PG 16 + pgvecto-rs extension) |
| Port | 5433 (host) → 5432 (container) |
| User | postgres |
| Password | postgres |
| DB | immich |
| Data path (Unraid) | /mnt/user/appdata/PostgreSQL_Immich |
| Obsah | Metadata Immich (fotky, alba, uživatelé) — bez samotných fotek |
| Záloha | /mnt/user/Backup/Critical/PostgreSQLImmichBackup/tower/YYYY-MM-DD_HHMM/immich_all.sql.gz |
| Retence | 7 dní / posledních 7 záloh |
| User Script (Unraid) | PostgreSQLImmichBackup |
| Skript | postgresqlimmichbackup_with_gzip.sh |
| První test | 2026-05-23 07:25:31 → 07:25:49 (18 sekund), dump 52 MB |
Poznámka:
pgvecto-rsje specializovaná extension pro vektorové vyhledávání (používá Immich pro AI similarity search). Dump obsahuje i extension definice, takže restore vyžaduje stejný image (tensorchord/pgvecto-rs), ne čistýpostgres.
Skripty
| Soubor | Popis |
|---|---|
postgresqlbackup_with_gzip.sh |
Backup postgresql18 (pg_dumpall → gzip) |
postgresqlimmichbackup_with_gzip.sh |
Backup PostgreSQL_Immich (pg_dumpall → gzip) |
postgresqlrestore_from_backup.sh |
Restore postgresql18 z nejnovější / zadané zálohy |
verify_backup_integrity.sh |
Ověření DB, tabulek, indexů, rolí po restore |
Backup (spuštění ručně na Tower)
bash /boot/config/plugins/user.scripts/scripts/PostgreSQLBackup/script
bash /boot/config/plugins/user.scripts/scripts/PostgreSQLImmichBackup/script
Restore postgresql18 (nejnovější záloha)
bash postgresqlrestore_from_backup.sh
Restore postgresql18 (konkrétní záloha)
bash postgresqlrestore_from_backup.sh /mnt/user/Backup/Critical/PostgreSQLBackup/tower/2026-05-23_0659
POZOR: Dump je vytvořen s
--clean --if-exists→ restore dropne a znovu vytvoří všechny objekty. Existující data budou přepsána.
Verify po restore
bash verify_backup_integrity.sh
Metoda zálohy
- pg_dumpall — jeden soubor obsahující všechny DB, role, tablespaces, grants, extensions
- Streamuje přes
stdout | gzippřímo na disk → žádný dočasný soubor uvnitř kontejneru - Restore:
gunzip -c file.sql.gz | psql - Validace: EXIT_CODE z
${PIPESTATUS[0]}+ kontrola velikosti souboru + prázdný .err soubor
Struktura záloh na disku
/mnt/user/Backup/Critical/
├── PostgreSQLBackup/
│ └── tower/
│ └── 2026-05-23_0659/
│ └── all_databases.sql.gz (3.3 GB)
└── PostgreSQLImmichBackup/
└── tower/
└── 2026-05-23_0725/
└── immich_all.sql.gz (52 MB)
Windows přístup
\\tower\Backup\Critical\PostgreSQLBackup\
\\tower\Backup\Critical\PostgreSQLImmichBackup\
Unraid User Scripts (Tower)
Skripty jsou nasazeny v:
/boot/config/plugins/user.scripts/scripts/PostgreSQLBackup/
/boot/config/plugins/user.scripts/scripts/PostgreSQLImmichBackup/
Nastavit schedule: Settings → User Scripts → Daily
SSH přístup na Tower (z Windows/Python)
Heslo pro SSH se liší od ostatních hesel!
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("192.168.1.76", username="root", password="7309208104",
look_for_keys=False, allow_agent=False)
Standardní
ssh root@192.168.1.76z Windows selže kvůli "Too many authentication failures" (nabízí klíče před heslem). Použítlook_for_keys=False, allow_agent=False.