Eine PostgreSQL-Datenbank sichern und wiederherstellen
Diese Anleitung erstellt in der Hikube-Konsole ein Backup-Ziel, plant das tägliche Backup einer PostgreSQL-Datenbank, startet eines auf Abruf und stellt anschließend das erhaltene Archiv wieder her. Das Vorgehen ist für eine MariaDB-Datenbank, eine VM oder eine Disk dasselbe.
Voraussetzungen
- Ein Hikube-Projekt mit:
- einem S3-Bucket (siehe Einen Bucket erstellen);
- einer PostgreSQL-Datenbank, zum Beispiel
orders-db(siehe PostgreSQL-Schnellstart).
Schritt 1: Die Erstellung des Ziels öffnen
- Öffnen Sie im Seitenmenü Infrastructure > Backups.
- Öffnen Sie die Registerkarte Destinations und klicken Sie dann auf Create a destination.
Die Seite New destination öffnet sich.
Schritt 2: Konfigurieren und bestätigen
- Name:
quotidien(Kleinbuchstaben, Ziffern und Bindestriche, höchstens 40 Zeichen). - Bucket: Wählen Sie den Bucket des Projekts.
- Credentials: Belassen Sie Create a dedicated user und geben Sie einen User name ein, zum Beispiel
backup. Seine Zugangsdaten dienen nur den Backups. - Retention (days): Behalten Sie
30bei. - Klicken Sie auf Create.
Die Konsole zeigt Destination created an: „quotidien“ wird eingerichtet.
Schritt 3: Den Zustand prüfen
In der Registerkarte Destinations wechselt der Zustand von quotidien innerhalb weniger Augenblicke von Provisioning zu Ready.
Erwartetes Ergebnis: Ziel Ready, mit dem Bucket, dem Benutzer und einer Aufbewahrung von 30 Tagen.
Schritt 4: Ein Backup planen und starten
- Öffnen Sie PostgreSQL, klicken Sie auf
orders-dbund dann auf die Registerkarte Backups. - Klicken Sie in Schedule auf Schedule. Das Fenster Schedule a backup öffnet sich:
- Plan name:
orders-db-quotidien; - Destination:
quotidien; - Registerkarte Preset, Frequency: Daily, Hour
02, Minute00(lokale Zeit).
- Plan name:
- Klicken Sie auf Schedule. Die Karte Schedule zeigt die Uhrzeit und die nächste Ausführung (Next) an.
- Klicken Sie in On-demand backup auf Back up now. Die Konsole zeigt Backup started to “quotidien” an.
Das Backup erscheint in Run status und dann in der Archivliste der Datenbank.
Erwartetes Ergebnis: Nach einigen Minuten wechselt das Archiv zu Ready.
Die in der Voreinstellung gewählte Uhrzeit wird in UTC umgerechnet. Sie verschiebt sich daher bei der nächsten Zeitumstellung in lokaler Zeit um eine Stunde. Siehe Konzepte.
Schritt 5: Wiederherstellen und prüfen
Fügen Sie zunächst einen Testeintrag hinzu, um anschließend sein Fehlen nach der Wiederherstellung festzustellen:
CREATE TABLE apres_sauvegarde (id int);
Stellen Sie dann das Archiv auf der ursprünglichen Datenbank wieder her:
- Klicken Sie in der Registerkarte Backups von
orders-dbin der Zeile des Archivs auf Restore. - Restore target: In place.
- Restore up to: Belassen Sie den Stand des ausgewählten Backups.
- Geben Sie zur Bestätigung
orders-dbein und klicken Sie dann auf die Wiederherstellungsschaltfläche (Restore the state of the backup of…).
Eine Wiederherstellung an Ort und Stelle überschreibt den aktuellen Inhalt der Datenbank. Um zu testen, ohne Ihre Daten anzutasten, erstellen Sie eine zweite, leere PostgreSQL-Datenbank derselben Version und wählen Sie Another application.
Die Wiederherstellung erscheint in Restores und wechselt dann zu Succeeded. Verbinden Sie sich erneut mit der Datenbank:
SELECT to_regclass('apres_sauvegarde');
Erwartetes Ergebnis: NULL: Die nach dem Backup erstellte Tabelle existiert nicht mehr.
Schritt 6: Schnelle Fehlerbehebung
| Symptom | Maßnahme |
|---|---|
| No bucket in this project | Erstellen Sie einen Bucket unter S3 Buckets und kehren Sie dann zur Erstellung des Ziels zurück. |
| Das Ziel bleibt im Zustand Error | Der Bucket oder sein Benutzer ist nicht mehr lesbar: siehe Fehlerbehebung. |
| No destination ready in this project. im Planungsfenster | Warten Sie, bis das Ziel Ready ist. |
| Das Archiv ist Failed | Lesen Sie die Meldung der Ausführung unter Backups > Activity und siehe dann Fehlerbehebung. |
| Die Wiederherstellung wird abgelehnt | Siehe Fehlerbehebung. |
Schritt 7: Aufräumen
- Klicken Sie in der Registerkarte Backups von
orders-db, Karte Schedule, auf Delete und bestätigen Sie. Die Archive bleiben erhalten. - Löschen Sie die Testarchive mit Delete in jeder Zeile. Bei PostgreSQL verschwindet nur der Eintrag: Die Daten bleiben im Bucket, den Sie unter S3 Buckets leeren können.
- Öffnen Sie unter Backups > Destinations das Menü von
quotidienund wählen Sie Delete. Die Löschung wird abgelehnt, solange ein Zeitplan, ein Backup oder eine Wiederherstellung das Ziel verwendet.