PostgreSQL braucht Wiederherstellung? PostgreSQL PITR konfigurieren

Veröffentlicht am:

Eine versehentliche Löschung entfernt einen wichtigen Datensatz. Die Datenbank bleibt online, und ihr Hochverfügbarkeits-Standby übernimmt dieselbe Löschung. Du brauchst eine Datenkopie aus der Zeit vor dem Fehler. Point-in-time restore (PITR) stellt eine Sicherung wieder her und spielt Transaktionsprotokolle bis zu einem gewählten Zeitpunkt nach. Daraus entsteht ein neuer PostgreSQL-Server mit dem damaligen Stand der Datenbanken.

Wiederherstellungspunkt vorbereiten

Verwende pg-ctappweu, Datenbank appdb, aus PostgreSQL-Server erstellen. HA kann nach dem vorherigen Trip aktiviert bleiben. Warte auf den Abschluss laufender Failover- oder Skalierungsoperationen.

Prüfe unter Compute + storage eine Sicherungsaufbewahrung von 7 Tagen oder länger. Sie bestimmt, wie weit zurück du wiederherstellen kannst; ein neuer Server benötigt zunächst eine abgeschlossene erste Sicherung.

Verbinde dich in VS Code als ctadmin mit appdb. Führe bei aktiviertem Standard-Autocommit des Clients einmal aus:

CREATE TABLE restore_check (id integer PRIMARY KEY, note text NOT NULL);
INSERT INTO restore_check VALUES (1, 'Keep this record');

Warte nach erfolgreicher Ausführung eine Minute und führe aus:

SELECT clock_timestamp() AT TIME ZONE 'UTC' AS restore_time_utc;
SELECT * FROM restore_check;

Abfrageergebnisse mit gespeichertem UTC-Wiederherstellungszeitpunkt und der Zeile Keep this record

Notiere restore_time_utc. Prüfe Keep this record in Zeile 1. Der Zeitpunkt liegt nach dem bestätigten Speichern; dein tatsächlicher Wert wird abweichen.

Testdatensatz löschen

Warte eine weitere Minute und führe auf dem ursprünglichen Server aus:

DELETE FROM restore_check WHERE id = 1;
SELECT count(*) AS remaining_rows FROM restore_check;

Erwarte remaining_rows = 0. Die Tabelle bleibt bestehen; ihre Testzeile wurde gelöscht.

Auf einem neuen Server wiederherstellen

Öffne pg-ctappweu → Overview → Restore. Konfiguriere:

Resource group: rg-cloudtrips-pg-test-weu
New server name: pg-ctrestoreweu (weltweit eindeutig)
Region: West Europe
Point-in-time restore: Select a custom restore point
Custom restore point (UTC): deine notierte restore_time_utc

Wähle den notierten Zeitpunkt innerhalb des verfügbaren Wiederherstellungsfensters. Ist er zu aktuell, warte auf verfügbare Sicherungsprotokolle und aktualisiere die Ansicht. Prüfe Rechenkapazität, Speicher, Netzwerk und Kosten des Ziels und wähle Review + create → Create.

PostgreSQL-Wiederherstellungsformular mit pg-ctrestoreweu und dem gewählten UTC-Zeitpunkt vor der Löschung

Vergleiche den Zeitpunkt mit deiner Notiz. PITR stellt die Datenbanken des gesamten Servers auf einem separat berechneten Server derselben Region wieder her. Das Original bleibt verfügbar. Bei einer Quelle mit HA kann HA auf dem wiederhergestellten Server separat aktiviert werden.

Wiederhergestellte Zeile prüfen

Warte auf den Status Ready von pg-ctrestoreweu. Öffne dessen Networking, aktiviere öffentlichen Zugriff für dieses Lab und füge deine aktuelle Client-IP hinzu. Firewallregeln werden am wiederhergestellten Server separat konfiguriert.

Kopiere deine vorhandene PostgreSQL-Verbindung in VS Code und ändere den Host auf pg-ctrestoreweu.postgres.database.azure.com. Verwende Datenbank appdb, Benutzer ctadmin, das zum Wiederherstellungszeitpunkt gültige Passwort und dieselben TLS-Einstellungen Verify-Full / System. Verwende gegebenenfalls deinen abweichenden Servernamen.

Führe auf dem wiederhergestellten Server aus:

SELECT current_database() AS database_name;
SELECT * FROM restore_check;

Verbindung zu pg-ctrestoreweu mit appdb und der wiederhergestellten Zeile Keep this record

Prüfe Verbindungshost, appdb und Zeile 1 / Keep this record. Auf dem ursprünglichen Server liefert remaining_rows weiterhin 0. Damit ist der frühere Datenstand auf einem unabhängigen Server wiederhergestellt.

Prüfe bei einer echten Wiederherstellung die Daten und kopiere anschließend benötigte Datensätze zurück oder ändere die Anwendungsverbindung auf den wiederhergestellten Server. Bei einem vollständigen Wechsel müssen gültige Änderungen nach dem Wiederherstellungszeitpunkt abgeglichen und Servereinstellungen, Berechtigungen sowie HA geprüft werden.

Bereinigen

Lösche nach der Prüfung nur pg-ctrestoreweu. Behalte pg-ctappweu für den Lesereplikat-Trip. Das Löschen der gemeinsamen Ressourcengruppe würde beide Server entfernen.