Danil Sidorov
RU EN DE
Telegram

PostgreSQL-Backups im Browser

Ein Webdienst für volle, inkrementelle und differenzielle PostgreSQL-Backups ohne Konsole und Skripte

Case-Study-Titelbild „PostgreSQL-Backups im Browser“

Aufgabe

Mehrere PostgreSQL-Datenbanken sollten ohne SSH-Zugang zum Server und ohne manuelles pg_dump gesichert werden. Eine volle Kopie einer großen Datenbank ist teuer, deshalb brauchte es dazwischen kleine Backups nur mit den Änderungen.

Lösung

Eine Webanwendung mit Django gebaut. Jedes Backup speichert einen Fingerabdruck aller Zeilen, das nächste vergleicht den aktuellen Stand damit und schreibt nur den Unterschied: neue, geänderte und gelöschte Zeilen. Der Unterschied landet in einer SQL-Datei, die mit einfachem psql auf das wiederhergestellte volle Backup angewendet wird. Vor dem Start prüft die Anwendung die Verbindung und erklärt Fehler verständlich.

Umgesetzte Aufgaben

  • Volle Backups mit pg_dump und darauf inkrementelle und differenzielle gebaut
  • Jede Änderung erfasst, auch gelöschte Zeilen, ohne updated_at-Spalten
  • Wiederherstellung vollständig mit Tests gegen echtes PostgreSQL geprüft
  • Backups in einen Hintergrund-Worker verlegt, die Seite wartet nie auf einen Dump
  • Speicher wählbar gemacht: Serverplatte oder S3
  • Datenbankpasswörter nicht gespeichert: verschlüsselt in der Warteschlange, nach dem Backup gelöscht
  • Zugriff getrennt: jeder Nutzer sieht nur seine Backups

Ergebnis

Ein Backup ist im Browser mit zwei Klicks erledigt, zwischen vollen Backups werden nur Änderungen gespeichert. Der Code ist offen auf GitHub, der Dienst startet mit einem einzigen docker compose up.

Technologien

PythonDjangoPostgreSQLS3Docker

Quellen

Die Links belegen die Zahlen in diesem Projekt

Erzählen Sie von Ihrer Aufgabe

Telegram