DOAG Datenbank Kolumne: Wie man eine PostgreSQL-Datenbank am besten sichert und wiederherstellt

  • Erstellt von Borys Neselovskyi
  • Datenbank Kolumne, Datenbank

PostgreSQL gehört zu den beliebtesten und am häufigsten eingesetzten relationalen Datenbanken. Sie bietet eine Vielzahl an Funktionen und gilt als erstklassige Plattform für moderne Anwendungen, die auf einem relationalen Datenbankmodell basieren.

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

© arodsje