Einführung
Eine Sicherung ist nur dann nützlich, wenn sich damit die Anwendungsdaten wiederherstellen lassen. Sie exportieren eine kleine D1-Datenbank als SQL, erstellen aus der exportierten Datei eine zweite, temporäre Datenbank neu und vergleichen Daten sowie Einschränkungen, während das Original unverändert bleibt.
Dieses Lab beginnt unabhängig mit zwei synthetischen Tickets und verwendet höchstens zwei D1-Datenbanken. Die Sicherung bleibt in Ihrer LabEx-VM; ein Object-Storage-Konto oder ein Bucket ist für den Ablauf nicht erforderlich.
Verwenden Sie Ihr eigenes Lernkonto und eine frische VM. Die Einrichtung installiert zunächst Node.js 22.22.0 und führt anschließend npm install für das lokale Projektpaket Wrangler 4.131.1 sowie alle Assessment-Abhängigkeiten unter /home/labex/project/ticket-database aus. Die direkten Abhängigkeiten sind fest versioniert; bei der Installation wird eine eigene Lockdatei erstellt. Während der Einrichtung erfolgen weder eine Cloud-Anmeldung noch bewertete Datenbankoperationen. Installieren Sie auf einem persönlichen Rechner dieselbe Wrangler-Version mit npm install --save-dev wrangler@4.131.1 in Ihrem Projekt.
Diese Übung verwendet kleine synthetische Datensätze innerhalb der kostenlosen D1-Kontingente. Die bestehende Nutzung des Kontos wird auf diese Kontingente angerechnet. Eine gekaufte Domain ist nicht erforderlich. Behalten Sie diese VM, bis sowohl die Ressourcenlöschung als auch die Abmeldung überprüft wurden.
Diese VM autorisieren und das Konto auswählen
In diesem Schritt verbinden Sie dieses frische Terminal mit Ihrem eigenen Lernkonto. Eine Anmeldung im Dashboard allein autorisiert die VM nicht. Die D1-Berechtigung erlaubt das Erstellen, Ändern und Löschen von Datenbanken. Prüfen Sie die tatsächliche Einwilligungsseite einschließlich Background Access, bevor Sie die Autorisierung bestätigen.
Öffnen Sie das vorbereitete Projekt und prüfen Sie die festgelegte CLI-Version:
cd /home/labex/project/ticket-database
npx wrangler --version
Erwarten Sie 4.131.1. Starten Sie die Geräteautorisierung. --device zeigt einen Browsercode an, und --browser=false überlässt Ihnen die Wahl des Browsers:
npx wrangler login --device --browser=false --scopes account:read user:read d1:write
Öffnen Sie die angezeigte URL in Ihrem Browser, geben Sie den aktuellen Code ein, bestätigen Sie Ihr Lernkonto und die Berechtigungen und autorisieren Sie den Zugriff. Warten Sie, bis das Terminal den Erfolg bestätigt. Fügen Sie niemals Passwörter oder Token in Projektdateien ein.
npx wrangler whoami --json
Prüfen Sie loggedIn: true. Lesen Sie anschließend den name- und den id-Wert des Kontos, auch wenn nur ein Konto aufgelistet ist. Kopieren Sie die ID des vorgesehenen Kontos in die folgende Konfiguration. Die folgende Shell-Variable verwendet 6 zufällige Bytes, also 12 Hexadezimalzeichen, um Kollisionen mit anderen Lernenden zu vermeiden. Ein Here-Dokument schreibt das JSON zwischen den Zeilen JSON; $RUN wird darin expandiert.
Der umgekehrte Schrägstrich vor $schema erhält diesen JSON-Schlüssel unverändert; $RUN wird weiterhin durch den eindeutigen Namen dieses Durchlaufs ersetzt.
RUN=labex-c04-d06-$(openssl rand -hex 6)
cat > wrangler.jsonc <<JSON
{
"\$schema": "./node_modules/wrangler/config-schema.json",
"name": "$RUN",
"account_id": "YOUR_ACCOUNT_ID",
"main": "src/index.js",
"compatibility_date": "2026-09-15",
"workers_dev": true,
"preview_urls": false
}
JSON
Ersetzen Sie YOUR_ACCOUNT_ID, bevor Sie den Block ausführen. Lassen Sie dieses Terminal geöffnet, damit RUN verfügbar bleibt. name kennzeichnet diesen Durchlauf; account_id bestimmt das Konto für Cloud-Operationen. Die Datei ist gewöhnliches JSON und zugleich gültiges JSONC. Durch das Schreiben der Datei wird kein Worker bereitgestellt.
Die zu erhaltende Datenbank vorbereiten
In diesem Schritt erstellen Sie eine kleine Originaldatenbank. Die Einrichtung stellt das Ticket-Schema bereit. Ihre Aufgabe besteht darin, diese Datenbank einschließlich ihrer Einschränkungen zu exportieren und neu zu erstellen, ohne das Original zu ändern.
Erstellen Sie eine temporäre Cloud-Datenbank. --binding DB gibt dem Anwendungscode einen kurzen Namen, --update-config trägt den tatsächlichen Namen und die UUID in wrangler.jsonc ein, und --use-remote=false hält die Entwicklung lokal:
npx wrangler d1 create "$RUN-db" --binding DB --update-config --use-remote=false
Lesen Sie den erstellten Namen und die ID und prüfen Sie anschließend die gespeicherte Bindung:
cat wrangler.jsonc
Der Eintrag DB muss die Datenbank dieses Durchlaufs benennen. Eine Bindung ist eine konfigurierte Verbindung zwischen Code und einer Ressource. Ihre UUID identifiziert die Cloud-Datenbank, während --local eine separate SQLite-Datenbank in dieser VM verwendet. Geben Sie bei SQL-Befehlen immer entweder --local oder --remote an.
cat schema.sql
npx wrangler d1 execute DB --remote --file schema.sql
Lesen Sie die Quelldaten und das Schema, bevor Sie exportieren:
npx wrangler d1 execute DB --remote --command "SELECT id, subject, status, source FROM tickets ORDER BY id; SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'tickets';"
Es gibt zwei Tickets. Halten Sie die erwarteten Werte fest: Die ID 1 lautet Cannot sign in und ist offen; die ID 2 lautet Invoice copy und ist geschlossen. Beide haben als Quelle seed. Das Schema enthält einen Primärschlüssel, erforderliche Werte und eine Status-Einschränkung.
Eine vollständige SQL-Sicherung exportieren
In diesem Schritt erstellen Sie eine portable SQL-Datei. Ein Export beschreibt Tabellendefinitionen und Daten als SQL; durch den Import dieser Datei lässt sich eine Datenbank an einem anderen Ort neu erstellen. Dies unterscheidet sich von D1 Time Travel, das den Verlauf an Ort und Stelle wiederherstellt.
--remote wählt die Cloud-Quelle aus, und --output gibt die Datei an, die in dieser VM geschrieben wird. Behalten Sie sowohl Schema als auch Daten bei, indem Sie --no-schema und --no-data nicht verwenden:
npx wrangler d1 export DB --remote --output backup.sql
Bestätigen Sie bei einer entsprechenden Abfrage die genaue Quelldatenbank. Prüfen Sie die kleine exportierte Datei:
cat backup.sql
Suchen Sie nach CREATE TABLE und den INSERT-Anweisungen für die Tickets. Exportformat, Spaltenquotierung und interne Anweisungen können sich vom ursprünglichen, manuell geschriebenen SQL unterscheiden. Ein erfolgreicher Download allein beweist nicht, dass sich die Daten wiederherstellen lassen. Im nächsten Schritt prüfen Sie das Artefakt, indem Sie daraus eine Datenbank neu erstellen. Diese Datei enthält ausschließlich synthetische Daten. Bewahren Sie sie in der VM auf; ein R2-Bucket ist nicht erforderlich.
Eine separate Datenbank neu erstellen
In diesem Schritt stellen Sie die Daten in einer zweiten, leeren Datenbank wieder her, während das Original unverändert bleibt. Ein separates Ziel ermöglicht es Ihnen, die wiederhergestellten Daten zu vergleichen, bevor Sie eine Anwendungsbindung ändern.
Erstellen Sie eine zweite Ressource mit der Bindung REBUILT. Die Konfigurationsänderung fügt sie neben DB hinzu:
npx wrangler d1 create "$RUN-copy" --binding REBUILT --update-config --use-remote=false
cat wrangler.jsonc
Prüfen Sie, dass die beiden Bindungen unterschiedliche Datenbank-UUIDs sowie die erwarteten Namen mit den Endungen -db und -copy haben. Importieren Sie ausschließlich in REBUILT:
npx wrangler d1 execute REBUILT --remote --file backup.sql
Damit wird das exportierte SQL für das neue Cloud-Ziel ausgeführt. Bestätigen Sie dieses Ziel bei der Abfrage. Fragen Sie anschließend die Datenbank ab:
npx wrangler d1 execute REBUILT --remote --command "SELECT id, subject, status, source FROM tickets ORDER BY id; PRAGMA table_info(tickets);"
Die Zeilen und Spaltendefinitionen müssen mit dem Original übereinstimmen. Testen Sie eine wiederhergestellte Einschränkung mit einem ungültigen Insert:
npx wrangler d1 execute REBUILT --remote --command "INSERT INTO tickets (id, subject, status, source) VALUES (3, 'Invalid', 'lost', 'probe');"
Erwarten Sie CHECK constraint failed. Der absichtlich fehlschlagende Befehl darf keine dritte Zeile hinzufügen. Lesen Sie beide Datenbanken erneut aus:
npx wrangler d1 execute DB --remote --command "SELECT id, subject, status, source FROM tickets ORDER BY id;"
npx wrangler d1 execute REBUILT --remote --command "SELECT id, subject, status, source FROM tickets ORDER BY id;"
Beide Datenbanken müssen weiterhin genau die zwei ursprünglichen Zeilen enthalten. Öffnen Sie im Dashboard die beiden Ressourcen unter ihren exakten Namen für eine schreibgeschützte Prüfung. Überprüfen Sie ihre unterschiedlichen IDs, bevor Sie die neu erstellte Tabelle untersuchen. Überschreiben Sie niemals eine andere Datenbank, um die Wiederherstellung zu testen.

Dieses Beispiel zeigt die zwei wiederhergestellten Tickets in der Datenbank -copy. Der generierte Name kennzeichnet diesen Beispieldurchlauf; deine Ressourcennamen und UUIDs werden abweichen. Der Screenshot bestätigt nur die sichtbaren Zeilen. Die obigen CLI-Befehle für Export und Import sowie die unabhängigen Prüfungen belegen die Wiederherstellung, das übereinstimmende Schema und die erhaltenen Einschränkungen.
Die temporären Ressourcen löschen
In diesem Schritt entfernen Sie nur die Ressourcen dieses Labs, solange die VM noch autorisiert ist. Schließen Sie zuerst alle funktionalen Prüfungen ab. Behalten Sie die Konfiguration bei, bis die Löschung vollständig überprüft wurde.
npx wrangler d1 delete REBUILT
npx wrangler d1 delete DB
Prüfen Sie die Abfrage und bestätigen Sie, dass nur die Datenbank dieses Durchlaufs gelöscht wird. Listen Sie anschließend die Datenbanken auf:
npx wrangler d1 list --json
Die beiden gespeicherten Datenbanknamen und UUIDs dürfen in einer erfolgreichen Antwort nicht mehr vorkommen. Andere Ressourcen können weiterhin vorhanden sein. Ein Authentifizierungs- oder Netzwerkfehler ist nicht aussagekräftig: Beheben Sie den Zugriffsfehler und wiederholen Sie die Abfrage, bevor Sie fortfahren. Führen Sie die Überprüfung dieses Schritts aus, solange Sie noch angemeldet sind.
Die Autorisierung dieser VM beenden
In diesem Schritt beenden Sie die Autorisierung erst, nachdem die unabhängige Löschprüfung erfolgreich war. Mit dem Logout entfernen Sie die auf dieser VM gespeicherte Wrangler-Autorisierung. Das bloße Schließen einer VM bereinigt keine Cloud-Ressourcen.
npx wrangler logout
npx wrangler whoami --json
Erwarten Sie loggedIn: false. Diese nicht authentifizierte Abfrage kann mit einem Fehlercode beendet werden. Das ist nur dann erwartungsgemäß, wenn die strukturierte Antwort ausdrücklich angibt, dass Sie abgemeldet sind. Schließen Sie die Überprüfung ab und beenden Sie anschließend die Laborumgebung.
Zusammenfassung
Sie haben das Exportieren und erneute Erstellen einer Datenbank geübt. Sie haben die sichtbaren Datenbankergebnisse geprüft, das ausgewählte Konto und den lokalen Zustand ausdrücklich festgelegt und die temporären Ressourcen vor der Abmeldung entfernt.



