Backup- und DR-Dienst für PostgreSQL auf einer Sicherungs-/Wiederherstellungs-Appliance

PostgreSQL ist ein leistungsstarkes objektrelationales Open-Source-Datenbanksystem, das die SQL-Sprache verwendet und erweitert und viele Funktionen bietet, mit denen die kompliziertesten Datenarbeitslasten sicher gespeichert und skaliert werden können.

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 pg_start_backup(label) und pg_stop_backup() Befehle, wenn Sicherungen mit Linux Change Block Tracking und LVM-Snapshot ausgeführt werden.

  • Vollständige und inkrementelle Sicherungen (dateibasiert, traditionell): Backup and DR verwendet die dateibasierten PostgreSQL-Befehle für Sicherungen pg_dump. Der Befehl pg_dump bietet keine Option zum Erfassen inkrementeller Änderungen einer Datenbank. Daher ist jede Sicherung eine vollständige Sicherung der Datenbank.

    Bei der Wiederherstellung der Datenbank wird die Datenbank wiederhergestellt, indem der Datenbereich physisch überschrieben wird.

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

Funktionsweise: Backup und DR Volume-basierte Sicherung mit Linux CBT

Nur geänderte Blöcke werden in der Bitmap verfolgt. 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 anzuhalten.

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

  4. Der Agent ruft die Datenbank-API auf, um die Datenbank wieder zu aktivieren.

  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. Für die Datenwiederherstellung stellt Backup and DR sofort ein beschreibbares Staging-Laufwerk bereit und aktiviert die Datenbank.

Der Befehl zum Anhalten oder Aufheben des Anhaltens wird auf dem primären Knoten für einen Snapshot-Job auf Volume-Ebene ausgeführt:

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

Die Befehle zum Anhalten und Aufheben des Anhaltens werden auf einem Standby-Knoten für einen Snapshot-Job auf Volume-Ebene 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();

Funktionsweise: Dateibasierte Sicherung

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

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

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

  3. Rufen Sie die Vollsicherung mit dem Befehl zum Sichern von Dumps auf und schreiben Sie die Sicherung auf das bereitgestellte Laufwerk.

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

  5. Für die Datenwiederherstellung stellt Backup und DR das Staging-Laufwerk sofort auf dem Datenbankserver bereit und startet den Wiederherstellungsvorgang für die Datenbank. Logs können zu einem beliebigen Zeitpunkt nach der Wiederherstellung der Datenbank wiedergegeben werden.

Nächste Schritte

Datenbank für Backup and DR vorbereiten

Weitere Dokumentation zu Backup and DR für PostgreSQL