Home > Backup- und Wiederherstellungs-Blog > PostgreSQL-Sicherung und -Wiederherstellung. Wie sichert man eine PostgreSQL-Datenbank?

PostgreSQL-Sicherung und -Wiederherstellung. Wie sichert man eine PostgreSQL-Datenbank?

1 Star2 Stars3 Stars4 Stars5 Stars
(7 stimmen, durchschnitt: 4,94 aus 5)
Loading...
Aktualisiert 4th Mai 2022, Rob Morrison

Was ist PostgreSQL und warum muss es gesichert werden?

PostgreSQL ist ein Plugin, das entwickelt wurde, um Backup- und Restore-Prozeduren zu vereinfachen. Es gibt viele Gründe, warum Ihre Datenbanken gefährdet sein können. Zum Beispiel Geräteausfälle (die dazu führen können, dass alle Instanzen nicht mehr verfügbar sind), Datenbeschädigung (die sich auch auf die Replikate ausbreiten kann), Softwarefehler, menschliches Versagen, Ransomware- oder Malware-Angriffe und Compliance-Anforderungen (wie z. B. Datenaufbewahrungsfristen und Speicherung von Daten).

Wenn Sie eine Datenbank verwalten, ist es wichtig, regelmäßig Backups zu erstellen, damit Sie nicht Gefahr laufen, wertvolle Informationen und viele Arbeitsstunden zu verlieren. Eine solide Strategie für die Sicherung und Wiederherstellung von Datenbanken ist ein wichtiger Bestandteil der Datenverwaltung für jeden Betrieb.

Ein Plugin wie das PostgreSQL-Backup kann Ihnen auch helfen, kostspielige Ausfälle zu vermeiden, die zu rechtlichen Schritten führen könnten. Wenn etwas passiert, das Ihre Datenbank stört (aufgrund von unschuldigen Fehlern oder bösartigen Angriffen), können Sie Ihre Daten wiederherstellen und sie schnell wieder zum Laufen bringen. In diesem Artikel wird erklärt, wie Sie Postgres-Datenbanken einfach sichern und wiederherstellen können.

Welche Backup-Methoden sind in Postgres integriert?

PostgreSQL kann Administratoren dabei helfen, die Datenintegrität zu schützen, Entwicklern dabei, robustere und sicherere Umgebungen aufzubauen, und Programmierern dabei, neue Anwendungen zu erstellen. Das Plugin unterstützt drei Sicherungstechniken: SQL-Dump, Backup auf Dateisystemebene und kontinuierliche Archivierung. Schauen wir uns jede Technik im Detail an.

SQL-Dump

Ziel dieser Dump-Methode ist es, eine Datei mit SQL-Befehlen zu erzeugen, die an den Server zurückgespielt werden kann. Mit Hilfe dieser Informationen kann die Datenbank in dem Zustand wiederhergestellt werden, in dem sie sich zum Zeitpunkt der Erstellung des Dumps befand. Sie können diese Prozedur von einem beliebigen Remote-Host aus ausführen, sofern dieser Zugriff auf die Datenbank hat (Sie müssen Lesezugriff auf alle Tabellen haben, die Sie sichern wollen, daher ist es am besten, den Dump als Datenbank-Superuser auszuführen). Mit dem PostgreSQL-Backup erstellte Dumps sind intern konsistent und stellen einen Schnappschuss der Datenbank dar, wie sie zu Beginn des Dumps war.

Der grundlegende Befehl zur Erstellung eines Dumps ist:

pg_dump dbname > dumpfile

Und zum Wiederherstellen eines Dumps:

psql dbname < dumpfile

Ein Vorteil dieser Sicherungsmethode ist, dass Sie diese Ausgabe im Allgemeinen in neue Versionen von PostgreSQL laden und eine Datenbank auf eine andere Rechnerarchitektur übertragen können (z. B. von einem 32-Bit- auf einen 64-Bit-Server).

Sicherung auf Dateisystemebene

Sie können eine PostgreSQL-Datenbank auch sichern und wiederherstellen, indem Sie die Dateien direkt kopieren. Zum Beispiel mit dem folgenden Befehl:

tar -cf backup.tar /usr/local/pgsql/data

Diese Methode wird jedoch als etwas unpraktischer oder schlechter als ein Dump angesehen, weil:

  1. Der Datenbankserver muss heruntergefahren werden, um ein brauchbares Backup zu erhalten. Man kann nicht einfach die Verbindungen unterbinden, sondern muss den Server ganz abschalten. Der Grund dafür ist, dass Tools wie tar nicht nur den Zustand des Dateisystems, sondern auch den der internen Pufferung erfassen).
  2. Sie können nicht nur ausgewählte einzelne Tabellen oder Datenbanken aus ihren Verzeichnissen und Dateien sichern oder wiederherstellen, da die darin enthaltenen Informationen ohne die entsprechenden Commit-Log-Dateien nicht verwendet werden können.

Backups auf Dateisystemebene funktionieren nur bei der Sicherung und Wiederherstellung kompletter Datenbank-Cluster. Sie müssen einen „konsistenten Snapshot“ oder „eingefrorenen Snapshot“ des gesamten Datenträgers erstellen, der die Datenbank enthält – dann kopieren Sie das gesamte Datenverzeichnis auf ein Sicherungsgerät und geben den eingefrorenen Snapshot frei.

Dieses Sicherungsverfahren kann bei laufendem Server durchgeführt werden; beachten Sie jedoch, dass die Sicherung die Datenbankdateien in einem Zustand speichert, als ob der Server nicht ordnungsgemäß heruntergefahren worden wäre (Sie können einen Prüfpunkt unmittelbar vor der Erstellung des Snapshots durchführen, um die Zeit bis zur Wiederherstellung zu verkürzen). Denken Sie auch daran, dass eine Dateisystem-Sicherung wahrscheinlich größer ist als ein SQL-Dump.

Kontinuierliche Archivierung der PostgreSQL-Sicherung

PostgreSQL führt im Unterverzeichnis pg_wal/ ein kontinuierliches Schreibprotokoll, das alle Änderungen an den Datendateien der Datenbank aufzeichnet. Das Ziel dieses Protokolls ist es, sicherzustellen, dass im Falle eines Systemabsturzes die Datenbank konsistent wiederhergestellt werden kann. PostgreSQL tut dies, indem es die Protokolleinträge, die seit dem letzten Checkpoint gemacht wurden, „wieder abspielt“.

Diese Sicherungstechnik kann mit der Sicherung auf Dateisystemebene kombiniert werden, um die WAL-Dateien zu sichern. Wenn Sie dann eine Wiederherstellung durchführen müssen, können Sie das Dateisystem wiederherstellen und dann die WAL-Dateien abspielen, um es auf den aktuellen Stand zu bringen. Die Protokollwiedergabe korrigiert alle internen Inkonsistenzen, da Sie eine lange Folge von WAL-Dateien kombinieren und durch die Archivierung der WAL-Dateien eine kontinuierliche Sicherung erreichen können. Wenn Sie diese Dateireihen auf einen anderen Rechner übertragen, der über dieselbe Basis-Sicherungsdatei verfügt, können Sie außerdem ein Standby-System mit einer nahezu aktuellen Kopie der Datenbank einrichten.

Beachten Sie jedoch, dass mit dieser Sicherungstechnik nur ganze Datenbank-Cluster und keine Teilmengen wiederhergestellt werden können. Außerdem wird viel Archivierungsspeicher benötigt, da nicht nur die Basisdatenbank, sondern auch der gesamte WAL-Datenverkehr archiviert wird. Viele Anwender bevorzugen jedoch diese Methode aufgrund ihrer höheren Zuverlässigkeit.

Welche Produkte gibt es auf dem Markt für PostgreSQL-Backups, und was können sie bieten?

PostgreSQL ist ein unglaublich beliebtes Datenbankmanagementsystem (Stack Overflow hat es sogar auf den zweiten Platz vor Microsoft SQL Server, Mongo und Oracle gesetzt).

Aufgrund seiner Fähigkeiten und seiner zunehmenden Nutzung bieten mehrere Unternehmen dieses System als Teil ihres Service Packs an. Dazu gehören unter anderem:

  • Veeam: Dieses einfache und bequeme Tool sorgt für eine effektive Disaster Recovery und Datenspeicherung. Es ermöglicht den Nutzern auch, verschiedene Strategien für unterschiedliche Aufgaben zu erstellen. Allerdings haben Kunden über lange Reaktionszeiten des Support-Teams berichtet.
  • Dell Technologien: Sie können ihre Data Protection Central als konsolidiertes Dashboard für den Gesamtzustand aller Ihrer Backups mit Networker und Avamar verwenden. Das Produkt gilt jedoch als etwas veraltet und hat sich in den letzten Jahren nicht viel weiterentwickelt.
  • Commvault Sicherung und Wiederherstellung: Mit Commvault können Sie Daten über eine zentral gesteuerte Verwaltungskonsole wiederherstellen, so dass die Administratoren nicht mehr vor Ort arbeiten müssen. Mit der Funktion „Edge Drive“ können Benutzer das System auch als private Cloud nutzen. Einige Kunden haben jedoch von schwerwiegenden Problemen mit der zugrunde liegenden Infrastruktur berichtet. So führt beispielsweise ein Stromausfall zur Beschädigung der Deduplizierungsdatenbanken.
  • Percona PostgreSQL-Distribution: Percona bietet eine Sammlung von Werkzeugen, die Ihnen bei der Verwaltung Ihres PostgreSQL-Datenbanksystems helfen, indem sie PostgreSQL installieren und mit Erweiterungen ergänzen, um wesentliche praktische Aufgaben zu lösen und Client-Programmen das Senden und Empfangen von Abfragen an den und vom PostgreSQL-Backend-Server zu ermöglichen.
  • Veritas: Veritas ist ein Tool zum Schutz von Unternehmensdaten, das sich an Legacy-Systeme richtet und es Ihnen ermöglicht, Ihre bestehenden Automatisierungs-, Governance- und Verwaltungsprozesse auf den EDB Postgres Advanced Server und PostgreSQL-Datenbanken auszuweiten.
  • MicroFocus: MicroFocus ist einer der weltweit größten Anbieter von Unternehmenssoftware und bietet mehrere Backup-Optionen für SQL Server, Oracle und PostgreSQL. Sie können auch Empfehlungen für die Sicherung von Datenbanken geben, die von Serverkonfigurationen verwendet werden.
  • Cohesity: Cohesity vereinfacht und rationalisiert die Datenverwaltung in verteilten und relationalen Datenbanken. Diese Option wird in der Regel von Unternehmen mit großen, wachsenden Datenmengen gewählt. Cohesity verwendet eine Remote-Adapter-Funktion zur Sicherung von PostgreSQL-DBs und WAL-Logs.
  • Rubrik: Rubrik bietet Schutz vor Hackern und kann Unternehmen helfen, sich schnell von Angriffen zu erholen. Die Plattform unterstützt App Awareness für Oracle, SAP HANA, PostgreSQL, Microsoft SQL Server, MySQL und NoSQL.

Bacula Enterprise-Funktionen für die Sicherung und Wiederherstellung von Postgres-Daten

Bacula ist eine abonnementbasierte Datensicherungslösung für Unternehmen, die Rechenzentren bei der Bewältigung großer Datenmengen zu sehr niedrigen Kosten unterstützt. Die Kunden haben das Unternehmen durchweg hoch bewertet, da es sich um eine extrem anpassbare Backup-Lösung für Unternehmen mit solider Leistung und ausgezeichneter Skalierbarkeit handelt.

Bacula bietet mehrere Vorteile gegenüber seinen Mitbewerbern: Es kann mit physischen, virtuellen, Container- und Cloud-Umgebungen, Snapshots, erweiterter Deduplizierung, Wiederherstellungen und Datenüberprüfung arbeiten – alles in einer Plattform. Sie können PostgreSQL problemlos mit Bacula Enterpriseverwenden.

Sie können zwischen zwei Haupttechniken wählen, um Ihre Postgres-Datenbank mit Bacula Enterprise zu sichern: PITR (Point-in-Time Recovery) oder Dump. Die Konfiguration des Plugins ist sehr einfach.

Zunächst geben Sie die Direktive Plugin Directory in der FileDaemon-Ressource der Datei bacula-fd.conf an.

Um PITR zu konfigurieren, müssen Sie die WAL-Archivierung aktivieren, um die Point In Time Recovery-Funktion von PostgreSQL zu nutzen. Die Konfiguration ist je nach Cluster-Version leicht unterschiedlich (Sie müssen entweder den archive_command und archive_mode oder den archive_command, wal_level und archive_mode konfigurieren). Sie müssen auch die Option Accurate in Ihrer Job-Ressource aktivieren, da das Plugin die Informationen des Accurate-Modus für die Handhabung von differenziellen Backups verwendet.

Das Plugin kann die folgenden Aktionen im PITR-Modus durchführen:

  • Vollständige Sicherung: Sicherung des gesamten Datenverzeichnisses und aller WAL-Dateien.
  • Inkrementelle Sicherung: Erzwingt den Wechsel des aktuellen WAL und sichert alle WAL-Dateien, die seit der letzten Sicherung erzeugt wurden.
  • Differentielle Sicherung: Sichert Datendateien, die sich seit der letzten Vollsicherung geändert haben, und WAL-Dateien, die seit der letzten Sicherung erzeugt wurden.

Wenn Sie den Dump-Modus verwenden, können Sie keine inkrementellen oder differenziellen Backups durchführen, aber das Plugin erkennt alle Datenbanken Ihres Servers.

Sie können auch Benutzer und Rollen in Ihrem PostgreSQL-Cluster wiederherstellen (wählen Sie einfach die Datei roles.sql aus), eine einzelne Datenbank (wählen Sie das Datenbankverzeichnis im Wiederherstellungsbefehl aus, das die Datendatei und das Datenbankerstellungsskript enthalten sollte), sowie Dump-Dateien in ein Verzeichnis, eine einzelne Tabelle oder einen kompletten Cluster mit PITR wiederherstellen. In diesem Fall müssen Sie:

  1. Stoppen Sie den Server, wenn er läuft.
  2. Kopieren Sie das gesamte Cluster-Datenverzeichnis und alle Tablespaces an einen temporären Ort (als Vorsichtsmaßnahme).
  3. Löschen Sie alle vorhandenen Dateien und Unterverzeichnisse.
  4. Stellen Sie die Datenbankdateien aus Ihrem Backup-Dump wieder her.
  5. Entfernen Sie die in pg_xlog vorhandenen Dateien und kopieren Sie die nicht archivierte WAL-Segmentdatei in die Datei.
  6. Bearbeiten Sie die Wiederherstellungsbefehlsdatei im Cluster-Datenverzeichnis und benennen Sie sie in recovery.conf um.
  7. Starten Sie den Server.

Bacula verwendet einen Verbindungsdienst, der es erlaubt, PostgreSQL-Parameter mit einem einzigen Dienstnamen zu verknüpfen – der durch eine PostgreSQL-Verbindung und die zugehörigen Einstellungen angegeben werden kann. Sie können den Datenbankzugriff mit dem Befehl estimate testen, um sicherzustellen, dass das Plugin richtig konfiguriert ist.

Das PostgreSQL-Plugin ist als Bacula Enterprise-Paket für alle unterstützten Plattformen verfügbar und unterstützt die PostgreSQL-Versionen 8.4, 9.0, 9.1, 9.2, 9.3, 9.4 und 9.5. Sie müssen es nur auf dem Client installieren, auf dem sich Ihr PostgreSQL-Cluster befindet.

Mit Bacula können Sie PostgreSQL-Datenbanken schnell und ohne komplexe Skripte sichern und wiederherstellen. Die Software kümmert sich um alle wichtigen Informationen und unterstützt Dump- und Point in Time Recovery (oder PITR) Backup- und Restore-Techniken, einschließlich inkrementellem PostgreSQL DB-Backup und differentiellem PostgreSQL-Datenbank-Backup.

Der Einstieg in Bacula Enterprise ist einfach; füllen Sie einfach das Formular aus und laden Sie die Testversion herunter. Bacula bietet ein sehr hohes Sicherheitsniveau, keine Kosten für Datenvolumen, ein Abonnement-Lizenzmodell und keine Bindung an einen bestimmten Anbieter. Das Unternehmen bietet nicht nur die beste Datensicherungssoftware, sondern auch Support, Patches und Updates.

Über den Autor
Rob Morrison
Rob Morrison ist der Marketingdirektor bei Bacula Systems. Er begann seine IT-Marketing-Karriere bei Silicon Graphics in der Schweiz, wo er fast 10 Jahre lang in verschiedenen Marketing-Management-Positionen sehr erfolgreich war. In den folgenden 10 Jahren hatte Rob Morrison auch verschiedene Marketing-Management-Positionen bei JBoss, Red Hat und Pentaho inne und sorgte für das Wachstum der Marktanteile dieser bekannten Unternehmen. Er ist Absolvent der Plymouth University und hat einen Honours-Abschluss in Digital Media and Communications und ein Overseas Studies Program absolviert.
Einen Kommentar hinterlassen

Deine Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *