PostgreSQL lernt inkrementelle Backups

Kurz vor Weihnachten erweitert ein Commit die Open-Source-Datenbank um inkrementelle Backups, die wohl in Version 17 einfließen.

In Pocket speichern vorlesen Druckansicht 144 Kommentare lesen

(Bild: hansen.matthew.d/Shutterstock)

Lesezeit: 2 Min.

Die Datenbank PostgreSQL wird künftig inkrementelle Backups erhalten. Ein entsprechender Code-Commit ist frisch in das GitHub-Repository des Open-Source-Projekts eingeflossen.

Mit der Änderung setzt Robert Haas seinen Vorschlag vom Juni 2023 um, der die technische Umsetzung und die Ergänzung des Backup-Befehls für die Datenbank beschreibt.

Die Methode setzt auf das Write Ahead Logging (WAL), das kontinuierlich die Änderungen protokolliert, um die Datenintegrität sicherzustellen. Für die inkrementellen Backups führt ein WalSummarizer laufend Buch über die WAL-Prozesse, die er zusammengefasst abspeichert. Die Summarizer-Dateien enthalten im Gegensatz zu den vollständigen WAL-Logs nur die Informationen, die Auskunft darüber geben, für welche Teile der Datenbank ein Backup erforderlich ist. Dazu protokolliert der WalSummarizer, welche Dateien die Datenbank erstellt, entfernt oder abgeschnitten hat und welche Blöcke sie geändert hat.

Um ein inkrementelles Backup anzustoßen, müssen User das Manifest eines vollständigen Backups als Referenz angeben. Das Tool wertet die WAL-Summary-Dateien aus, um die Änderungen seit der vollständigen Sicherung nachzuvollziehen und abzulegen, um sie bei einem Restore wiederherzustellen.

Mit ein wenig Aufwand ließen sich inkrementelle PostgreSQL-Backups auch bisher schon mithilfe des WAL erstellen, wie ein Blogbeitrag auf der Site des PostgreSQL-Monitoring-tools pgDash beschreibt.

Mit dem frischen Commit ist PostgreSQL nun für komfortable inkrementelle Backups mit einer Erweiterung des Befehls pg_basebackup vorbereitet, der den Kommandozeilenparameter --incremental lernt. Der Befehl pg_combinebackup kann zudem aus einer vollständigen Sicherung und einem oder mehreren inkrementellen Backups ein neues vollständiges Backup erstellen.

Mit der Neuerung dürfte in PostgreSQL 17 zu rechnen sein. Üblicherweise erscheinen die Hauptversionen der Datenbank im September, so auch dieses Jahr PostgreSQL 16. Im Juni kam neben dem Vorstoß zu inkrementellen Backups auch der Vorschlag auf, die Datenbank auf ein Multithreading-Modell umzustellen. Die Änderung erfordert allerdings grundlegende Änderungen an der Architektur und wird daher ein längerer Prozess sein. Die konkrete Umsetzung des inkrementellen Backups lässt sich dem Code-Commit auf GitHub entnehmen.

(rme)