Sicherung und Notfallwiederherstellung für PostgreSQL auf einer Sicherungs-/Wiederherstellungs-Appliance

Achtung:Ab dem 31. Juli 2027 wird die Unterstützung für das Sichern von PostgreSQL-Datenbanken über die Appliance-Verwaltungskonsole eingestellt. Weitere Informationen zu dieser Einstellung und alternativen Sicherungslösungen finden Sie unter Von Legacy-Datenbanksicherungen migrieren.

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

Von Backup and DR verwendete PostgreSQL-Sicherungs-API

  • Sicherungen auf Volume-Ebene (Linux Change Block Tracking und LVM-Snapshot): Backup and DR verwendet die PostgreSQL-Befehle pg_start_backup(label) und pg_stop_backup(), wenn Sicherungen mit Linux Change Block Tracking und LVM-Snapshot ausgeführt werden.

  • Vollständige + inkrementelle (dateibasierte traditionelle) Sicherungen: Backup and DR verwendet die dateibasierten Sicherungsbefehle von PostgreSQL pg_dump. Der pg_dump-Befehl hat keine Option zum Erfassen inkrementeller Änderungen einer Datenbank. Jede Sicherung ist also eine vollständige Sicherung der Datenbank.

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

  • PostgreSQL-Logsicherung: Bei einer Logsicherung kopiert Backup and DR physisch alle PostgreSQL-WALs (WriteAheadLog). Zum Bereinigen von Logs verwendet Backup and DR einen Befehl auf Betriebssystemebene.

Funktionsweise: Volume-basierte Sicherung mit Linux CBT in Backup and DR

Im Bitmap werden nur geänderte Blöcke erfasst. Es gibt keine Copy-on-Write-Vorgänge und keine E/A-intensiven Vorgänge.

Die folgenden Schritte beschreiben den Prozess für die Datensicherung und ‑wiederherstellung:

  1. Der Backup and DR-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 zu pausieren.

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

  4. Agent-Aufruf der Datenbank-API zum Entfrosten der Datenbank.

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

  6. Die Appliance erstellt einen internen Snapshot und synthetisiert eine virtuelle vollständige Sicherung zu einem bestimmten Zeitpunkt.

  7. Zur Datenwiederherstellung stellt Backup and DR sofort ein überschreibbares Staging-Laufwerk bereit und bringt die Datenbank online.

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

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

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

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

select pg_wal_replay_pause();
select pg_wal_replay_resume();

Wenn die PostgreSQL-Version 9.x ist:

select pg_xlog_replay_pause();
select pg_xlog_replay_resume();

So funktioniert die dateibasierte Sicherung

In den folgenden Schritten wird beschrieben, wie Sie mit dateibasierten Sicherungen eine Datensicherung und ‑wiederherstellung durchführen:

  1. Der Backup and DR-Agent wird auf dem Datenbankserver bereitgestellt.

  2. Stellen Sie das Staging-Laufwerk auf dem Datenbankserver bereit.

  3. Rufen Sie die vollständige Sicherung mit dem Befehl „dump backup“ auf und schreiben Sie die Sicherung auf die eingebundene Festplatte.

  4. Backup and DR erstellt einen internen Snapshot. Logsicherungen werden auf ähnliche Weise direkt aus dem Dateisystem nach einem von Ihnen konfigurierten Zeitplan durchgeführt.

  5. Zur Datenwiederherstellung stellt Backup and DR die Staging-Festplatte sofort auf dem Datenbankserver bereit und startet den Datenbankwiederherstellungsvorgang. Logs können nach der Wiederherstellung der Datenbank zu einem beliebigen Zeitpunkt abgespielt werden.

Nächste Schritte

Datenbank für Backup und DR vorbereiten

Weitere Dokumentation zu Backup and DR for PostgreSQL