In diesem Artikel zeigen wir, wie man eine PostgreSQL-Datenbank am besten sichert und wiederherstellt.
Postgres Core-Komponenten und Erweiterungen
Das PostgreSQL-Ökosystem besteht aus Kernkomponenten und wird durch zahlreiche Erweiterungen ergänzt. Die Core-Komponenten sind im PostgreSQL-Softwarepaket enthalten und sofort nach der Installation einsatzbereit.
PostgreSQL-Erweiterungen (Extensions) hingegen sind Zusatzmodule, die den Funktionsumfang der Datenbank erweitern. Sie stammen meist aus Open-Source-Projekten und müssen separat installiert und konfiguriert werden.
Physikalische und logische Sicherungen
PostgreSQL-Datenbanken können auf zwei Arten gesichert und wiederhergestellt werden: physikalisch und logisch.
Physikalische Sicherung
Bei der physikalischen Sicherung werden die Datenbankdateien und -verzeichnisse mithilfe von Systemwerkzeugen (z. B. rsync) kopiert. Sie kann entweder online (bei laufender Datenbank) oder offline (bei gestoppter Datenbank) erfolgen.
Tools zur physikalischen Sicherung:
1. pg_basebackup
PostgreSQL stellt mit pg_basebackup ein Core-Tool zur Verfügung, das vollständige Sicherungen ermöglicht. Ab Version 17 unterstützt es auch inkrementelle Backups. Das Tool bietet jedoch kein integriertes Repository zur Katalogisierung von Backups. Die Wiederherstellung ist vollständig oder mithilfe von Point-in-Time Recovery (PITR) auch unvollständig möglich.
2. Barman und pgBackRest
Diese beiden Open-Source-Tools sind in der PostgreSQL-Welt weit verbreitet. Beide bieten:
- Vollständige und inkrementelle Sicherungen
- Backup-Komprimierung
- Unterstützung für PITR (Point-In-Time Recovery)
- Zentrale Verwaltung und Historie der Backups in einem Repository
Unterschiede:
- pgBackRest erlaubt die Wiederherstellung einzelner Datenbanken eines Clusters.
- Barman kann hingegen nur ganze Cluster wiederherstellen, unterstützt jedoch das Streaming von Transaktionen, was für Hochverfügbarkeitsszenarien nützlich ist (z. B. als Ersatz für eine Standby-Datenbank).
Logische Sicherung
Logische Backups erfolgen auf SQL-Ebene: Es wird ein Abbild der Datenbank erzeugt, das SQL-Anweisungen zum Wiederherstellen von Objekten enthält. Dazu gehören folgende Core-Tools:
- pg_dump
- pg_dumpall
- pg_restore
pg_dump
Ein Kommandozeilenwerkzeug, das logische Backups einzelner Datenbanken erzeugt. Einsatzmöglichkeiten:
- Erstellung von Snapshots einzelner Datenbanken
- Export von Schemas, Tabellen oder Objekten
- Durchführung von Migrationen oder Upgrades
pg_dumpall
Sichert alle Datenbanken eines Clusters in einer Skriptdatei. Zusätzlich zu Daten und Strukturen speichert es auch globale Objekte wie Rollen, Tablespaces und Konfigurationen – diese werden von pg_dump nicht erfasst.
pg_restore
Dieses Tool dient zur Wiederherstellung von Dumps, die mit pg_dump im custom, tar oder directory-Format erstellt wurden. Es erlaubt die selektive Wiederherstellung bestimmter Objekte wie Tabellen oder Schemas und bietet eine feingranulare Kontrolle über den Wiederherstellungsprozess.
Backup-Lösungen von Drittanbietern
Viele kommerzielle Backup-Lösungen unterstützen ebenfalls PostgreSQL.
Beispiele:
- Commvault
- Veritas NetBackup
- Cohesity
Unternehmen, die bereits zentrale Backup-Lösungen für unternehmenskritische Systeme im Einsatz haben, können diese Tools auch für PostgreSQL verwenden.
Borys Neselovskyi


