Einen wiederhergestellten Shop neben dem Original öffnen

PostgreSQLBeginner
Jetzt üben

Einführung

PAPER & FORM hat jetzt vier Bestellungen, doch die Sicherung endet bei R-103. Du sollst den früheren Zustand neben dem Original öffnen, seine Artikel prüfen und nachweisen, dass der wiederhergestellte Dienst unabhängig eine Testbestellung annehmen kann.

Dieses Lab beginnt unabhängig. Originaldatenbank und backups/cutoff.dump sind vorbereitet und enthalten denselben Stand mit drei Bestellungen wie zuvor. Grundlegende Terminalkenntnisse sind nötig; Datenbank- und Verbindungskonzepte werden erneut erklärt. Nutze Workstation für Befehle, Original Shop für das Original und Restored Copy für das Testziel.

Du darfst nur die Wegwerfdatenbank shop_copy wiederherstellen und zurücksetzen. Erhalte Quelle, bereitgestelltes Programm, Sicherung und die unabhängige Datei in uploads/. Alle Daten sind erfunden; keine Zahlung oder E-Mail findet statt. Zwei Datenbanken auf einer Trainingsinstanz zeigen logischen Export und Isolation, keine vollständige Notfallwiederherstellung, Hardware-Redundanz oder PITR.

Nur in das leere unabhängige Ziel wiederherstellen

In diesem Schritt öffnest du eine funktionierende Kopie der Bestellungen am Grenzpunkt. Öffne Original Shop, dann Orders. Vier Datensätze sind vorhanden, R-101 bis R-104. R-103 enthält Raes zwei Print pair für $36.00. R-104 gehört Sol und entstand nach dem gesicherten Stand. Er muss im Original bleiben, aber aus dem wiederhergestellten Archiv ausgeschlossen sein.

Öffne Restored Copy. Das rostfarbene Band nennt shop_copy. Die Startseite funktioniert, doch Orders erklärt, dass die unabhängige Datenbank leer ist. Eine erfolgreiche Startseite allein beweist keine Wiederherstellung.

Wechsle zu Workstation. pwd zeigt das aktuelle Verzeichnis:

pwd
/home/labex/project/shop-backup

./shopctl identity liest die tatsächlichen Verbindungen. Gespeicherte Dienste wählen Datenbank, Host, Port und Konto: shop-source verbindet shop_source als schreibgeschützten d09_reader; shop-copy verbindet shop_copy als beschreibbaren d09_copy. Beide nutzen den Server 127.0.0.1:5432, doch die Kopierolle kann die Quelle nicht verbinden:

./shopctl identity

pg_restore --list liest das Custom-Archiv ohne Datenbankschreibzugriff. Prüfe Quellnamen sowie die Einträge orders und order_items:

pg_restore --list backups/cutoff.dump

Eine Datenbank speichert strukturierte Datensätze; Artikelzeilen verweisen auf ihre Bestellung. Custom-Archive enthalten Definitionen, Daten, Sequenzen für neue Kennungen und Constraints zum Erhalt dieser Beziehungen. Sie werden mit pg_restore wiederhergestellt, nicht als Binärdatei an psql geschickt. Beide vorbereiteten Clients verwenden PostgreSQL 14.

Die Aktion empty zeigt die echte Zielidentität und lehnt Datenbanken mit Benutzertabellen oder Sequenzen ab. Ein nicht leeres Ziel kann erhaltenswerte Arbeit enthalten. Nutze weder --clean noch --create: Diese Optionen könnten vorhandene Objekte löschen oder den ursprünglichen Datenbanknamen des Archivs verwenden.

Im folgenden Befehl führt && den rechten Teil nur nach erfolgreicher Leerprüfung aus. --dbname=service=shop-copy wählt ausdrücklich das unabhängige Ziel. --no-owner --no-privileges vermeidet den Import der Quellkonten und Berechtigungen. --single-transaction behandelt den Import als Einheit: Ein Fehler rollt alles zurück. --exit-on-error stoppt beim ersten Datenbankfehler. Führe den vollständigen geschützten Befehl aus:

./shopctl empty && pg_restore --dbname=service=shop-copy --no-owner --no-privileges --single-transaction --exit-on-error backups/cutoff.dump

Erwarte die Zielidentität und EMPTY: restore may proceed. Ein erfolgreiches pg_restore bleibt meist still. Erscheint beim Wiederholen REFUSED: target is not empty, kann der erste Import bereits gelungen sein. Lies die Kopie, bevor du etwas zurücksetzt.

records copy liest die echten verknüpften Bestell- und Artikelzeilen:

./shopctl records copy

Erwarte R-101, R-102 und R-103 für insgesamt $98.00, ohne R-104. Öffne in Restored Copy Orders, R-103 und den Beleg. Beide Print pair und $36.00 müssen vorhanden sein. Original Shop enthält weiterhin Sols R-104 und insgesamt $124.00.

Bei einem falschen Archiv oder einem nötigen Neuversuch setze nur das Wegwerfziel dieses Kurses zurück. Der Helfer zeigt seine Identität und verlangt den exakten Namen. Dies ist ein optionaler Wiederherstellungsbefehl, kein Routineschritt nach Erfolg:

./shopctl reset-copy shop_copy

Er verwirft ausschließlich shop_copy. Wiederhole danach die geschützte Wiederherstellung. Setze niemals das Original zurück, lösche es nicht und nutze keine umfassenden Datenbankbereinigungen. Die Prüfung beobachtet deine wirkliche Kopie; sie stellt sie nicht für dich wieder her.

Schreibfähigkeit der Kopie ohne Änderung des Originals nachweisen

In diesem Schritt testest du einen echten Schreibzugriff in der Kopie. Eine schreibgeschützte Anzeige kann richtig aussehen, obwohl Sequenz, Beziehungen oder Schreibverbindung defekt sind. Du gibst eine echte Testbestellung in der unabhängigen Kopie auf und vergleichst beide Shops. Bleibe in Restored Copy, öffne Collection und scrolle zum Formular. Lies vor dem Senden Writing to: shop_copy · RESTORED COPY und das rostfarbene Band. Sende diesen Test nicht in Original Shop.

Verwende genau:

Feld Wert
Reference R-901
Name Copy test
Item Print pair
Quantity 1

Wähle Place order ↗. R-901 enthält einen Artikel für $18.00. Lade den Beleg herunter und bestätige shop_copy. Die neue Bestellung nutzt wiederhergestellte Sequenz und Fremdschlüsselbeziehung; du hast keine vorbereitete Seite eingefügt. Wiederholtes Absenden derselben Referenz ergibt Already recorded statt einer zweiten Bestellung.

Öffne Orders in derselben Kopie. R-101, R-102, R-103 und R-901 müssen vorhanden sein, R-104 nicht. Wechsle zu Original Shop und öffne Orders. Dort bleiben R-101 bis R-104 ohne R-901. Ein anderes Band allein würde nicht reichen, wenn beide Anwendungen dieselbe Datenbank beschrieben.

Zeige in Workstation beide Identitäten und lies die echten Datensätze:

./shopctl identity
./shopctl records copy
./shopctl records source

Die Kopie ergibt $116.00, die Quelle weiterhin $124.00. Jede Zeile dauerhaft gleichzusetzen wäre falsch: R-104 gehört nur zur späteren Quelle und R-901 nur zur wiederhergestellten Kopie. Vergleiche die gemeinsamen Grenzbestellungen und die erlaubten Unterschiede beider Seiten.

Das Originalformular lehnt R-901 ab, ohne ihn zu schreiben. Beim falschen Tab lies Check the destination, wechsle zu Restored Copy und sende dort. Unbekannte Referenzen werden ebenfalls abgelehnt; korrigiere das Formular und wiederhole es. Bei falschem Namen, Artikel oder falscher Menge eines vorhandenen R-901 zeigt ./shopctl correct copy R-901 das tatsächliche Ziel und korrigiert nur diese Testbestellung auf Copy test / Print pair / 1. Andere Kopiebestellungen und alle Quelldaten bleiben unverändert. Braucht nur die Wegwerfkopie einen sauberen Neuversuch, nutze genau reset-copy shop_copy aus Schritt 1, stelle erneut wieder her und lege den Test einmal an.

Die Abschlussprüfung liest aktive Datenbanken und Websites, erhält den unabhängigen Upload und testet das Archiv in einer separaten Wegwerfdatenbank. Sie erstellt deinen Testauftrag nicht und repariert die Kopie nicht. Deine Sicherung hat nun Belege für vollständige Daten, einen klaren Grenzpunkt und eine unabhängige beschreibbare Wiederherstellung.

Zusammenfassung

Du hast tatsächliche Quelle und Ziel identifiziert, ein leeres Ziel abgesichert, ein Custom-Archiv transaktional wiederhergestellt und vollständige Bestelldetails gelesen. Eine neue Bestellung nur in der Kopie zeigte einen beschreibbaren unabhängigen Dienst, während das Original seinen späteren Auftrag behielt. Die Übung belegt eine logische Wiederherstellungsprobe, keine vollständige Produktionsstrategie.