# Vývoj open source nástroje pro zálohování PostgreSQL: od incidentu po production-ready řešení
Vývojář vytvořil self-hosted webovou aplikaci pro zálohování PostgreSQL, zaměřenou na middle/senior specialisty. Projekt používá pg_dump jako základ, přidává plánovač, integrace s úložišti a monitorování dostupnosti. Stack: Go (přepsán z Java), Gin, GORM, React + TypeScript, PostgreSQL, Docker Compose. Podporuje verze PostgreSQL 13–17.
Klíčové funkce:
- Plánované zálohy (plánovač podobný cron) s ukládáním na lokální disk, S3, Google Drive.
- Oznámení o selháních v Telegramu, emailem, Slack po N pokusech (filtr falešných spuštění).
- Health checky s grafy dostupnosti DB.
Projekt řeší úlohy primární zálohy pro VPS projekty a sekundární pro cloud DBaaS jako plán B.
Skutečný incident: ztráta dat v produkci
V roce 2023 pet-projekt (~1500 $/měsíc) utrpěl lidskou chybu. V produkci přes psql proveden dotaz:
UPDATE users SET email = '[email protected]' WHERE email ILIKE '%%';
Vymazáno ~10k záznamů. Poslední záloha – měsíc zpět (konsolová utilita typu PgBackRest). Obnoveno 65 % skripty podle ID, ostatním vráceny peníze. Ztráty ~30 % zisku + downtime.
Incident odhalil mezery: absence čerstvých záloh, ignorování SAVEPOINT/SELECT, vzácné testy obnovy.
Architektura a vývoj
První verze na Java za měsíc, pak migrace na Go pro výkon. UI obal nad pg_dump s:
- Komprese záloh (custom compression).
- Volitelná oznámení o úspěchu.
- API endpoint pro health checky.
Aktuální použití:
- Primární záloha pro small-scale projekty na VPS.
- Záloha pro cloud DBaaS (duplicita pro případ outage/smazání).
Projekt MIT licence, self-hosted, s webovým rozhraním.
Plány rozvoje: monitorování a alerting
Roadmap se zaměřuje na PostgreSQL-specifické monitorování:
- Analýza
pg_stat_activity,pg_stat_sys,pg_lockss UI vizualizací (alternativa k postgres_exporter + Grafana). - Alerting na zpomalení dotazů (threshold >100ms na INSERT).
- Statistiky CPU time a frekvence provedení pro detekci bottlenecků.
- Rozšíření storage (Yandex Disk, NFS, FTP) a notifications (Discord, Mattermost).
Inkrementální zálohy + WAL streaming s PITR již implementovány (UPD 2025).
Pravidla práce s produkční DB
Po incidentu zavedeny přísné praktiky:
- Před UPDATE: povinný SELECT s LIMIT 1–2 pro validaci.
- Pro bulk operace: manuální SAVEPOINT.
- Recovery drill každé čtvrtletí (cloud + lokální zálohy).
BEGIN;
SAVEPOINT sp1;
SELECT * FROM users WHERE email ILIKE '%old%' LIMIT 2;
-- OK? UPDATE...
RELEASE SAVEPOINT sp1;
COMMIT;
Za 2 roky recovery z Postgresus a cloud záloh probíhal bez selhání.
Co je důležité
- Nástroj řeší skutečný problém: automatizace + oznámení zabraňují ztrátě dat v 0.01 % případech.
- Go implementace zajišťuje low overhead pro VPS.
- Monitorování zátěže se integruje se zálohami out-of-box.
- Testujte recovery pravidelně – zálohy jsou bezcenné bez ověření.
- Open source alternativa k zálohám cloud DBaaS jako fault-tolerant vrstva.
— Editorial Team
Zatím žádné komentáře.