Sicherungs- und Notfallwiederherstellungsdienst für PostgreSQL

PostgreSQL ist ein leistungsstarkes, objektrelationales Open-Source-Datenbanksystem, das die SQL-Sprache verwendet und erweitert. Es bietet viele Funktionen, mit denen sich die kompliziertesten Datenlasten sicher speichern und skalieren lassen.

Von Backup and DR verwendete PostgreSQL-Sicherungs-API

  • Sicherungen auf Volumeebene (Linux-Änderungsblock-Tracking und LVM-Snapshot): Beim Ausführen von Sicherungen mit Linux-Änderungsblock-Tracking und LVM-Snapshot werden die PostgreSQL-Befehle pg_start_backup(label) und pg_stop_backup() verwendet.

  • Vollständige und inkrementelle (traditionelle dateibasierte) Sicherungen: Für die Sicherung und Notfallwiederherstellung werden die PostgreSQL-Befehle für dateibasierte Sicherungen pg_dump verwendet. Der Befehl pg_dump bietet keine Option zum Erfassen inkrementeller Änderungen an einer Datenbank. Daher ist jede Sicherung ein Datenbankdump.

    Bei der Wiederherstellung der Datenbank wird der Datenbereich physisch überschrieben.

  • PostgreSQL-Protokollsicherung: Bei einer Protokollsicherung kopiert Backup and DR alle PostgreSQL-WALs (WriteAheadLog) physisch. Zum Löschen von Protokollen verwendet Backup and DR einen Befehl auf Betriebssystemebene.

Funktionsweise: Volumebasierte Sicherungen für Sicherung und Notfallwiederherstellung mit Linux CBT

In der Bitmap werden nur geänderte Blöcke erfasst: keine Copy-on-Writes, keine ‑I/O-intensiven Vorgänge.

In den folgenden Schritten wird der Prozess für die Datensicherung und -wiederherstellung beschrieben:

  1. Der Sicherungs- und Notfallwiederherstellungs-Agent verwendet CBT, um geänderte Blöcke im Datenbankdatenbereich zu verfolgen.

  2. Der Agent ruft die Datenbank-API auf, um die Datenbank für die Datensicherung einzufrieren oder anzuhalten.

  3. Der Agent erstellt einen LVM-Snapshot des Datenbankdatenbereichs und synthetisiert eine Bitmap.

  4. Der Kundenservicemitarbeiter ruft die Datenbank-API auf, um die Datenbank zu entsperren.

  5. Der Agent kopiert geänderte Blöcke in die Sicherungs-/Wiederherstellungsanwendung, die dann den Snapshot löscht und die Sicherung katalogisiert.

  6. Die Appliance erstellt einen internen Snapshot und synthetisiert eine virtuelle Vollsicherung zu einem bestimmten Zeitpunkt.

  7. Für die Datenwiederherstellung stellt die Sicherung und Notfallwiederherstellung sofort ein überschreibbares Staging-Laufwerk bereit und stellt die Datenbank online.

Der Befehl „quiesce“ oder „unquiesce“ wird für einen Snapshot-Job auf Volumeebene auf dem primären ausgeführt:

select pg_start_backup(<label>);
select pg_stop_backup();

Die Befehle „quiesce“ und „unquiesce“ werden auf einem Standby-Knoten für einen Snapshot-Job auf Volumeebene ausgeführt:

PostgreSQL-Version ist 10.x oder höher:

select pg_wal_replay_pause();
select pg_wal_replay_resume();

PostgreSQL-Version 9.x:

select pg_xlog_replay_pause();
select pg_xlog_replay_resume();

Funktionsweise: dateibasierte Sicherung

In den folgenden Schritten wird beschrieben, wie Sie Daten mithilfe von dateibasierten Sicherungs-Images sichern und wiederherstellen:

  1. Der Sicherungs- und Notfallwiederherstellungs-Agent wird auf dem Datenbankserver bereitgestellt.

  2. Bereitstellungslaufwerk auf dem Datenbankserver bereitstellen.

  3. Führen Sie eine vollständige Sicherung mit dem Befehl „dump backup“ aus und schreiben Sie die Sicherung auf das bereitgestellte Laufwerk.

  4. Für die Sicherung und Notfallwiederherstellung wird ein interner Snapshot erstellt. Log-Sicherungen werden auf ähnliche Weise direkt aus dem Dateisystem nach einem von Ihnen konfigurierten Zeitplan durchgeführt.

  5. Für die Datenwiederherstellung wird der Staging-Speicherplatz von „Sicherung und Notfallwiederherstellung“ sofort auf dem Datenbankserver bereitgestellt und der Datenbankwiederherstellungsvorgang gestartet. Nach der Wiederherstellung der Datenbank können Protokolle zu einem beliebigen Zeitpunkt abgespielt werden.

Nächste Schritte

Datenbank für Sicherung und Notfallwiederherstellung vorbereiten

Weitere Dokumentation zu Sicherung und Notfallwiederherstellung für PostgreSQL