Aufgabe 13 - Physische Organisation, Backup und Restore
Aufgabe 13 - Physische Organisation und Datensicherung
Abschnitt betitelt „Aufgabe 13 - Physische Organisation und Datensicherung“Worum geht es?
Abschnitt betitelt „Worum geht es?“In dieser Übung wird untersucht, wie Daten in PostgreSQL physisch landen, wie MVCC und VACUUM zusammenhängen und wie man vor Datenverlust schützt (siehe Kapitel 6 - Physische Organisation). Im Expertenteil wird Table Bloat an echten Werten gemessen und Point-in-Time Recovery konzeptionell skizziert.
Was Sie dafür brauchen
Abschnitt betitelt „Was Sie dafür brauchen“- Kapitel 6 - Physische Organisation.
- Ein PostgreSQL-Server mit der Northwind-Datenbank;
pg_dump,pg_basebackup.
Welche Kompetenzen Sie erwerben und zeigen
Abschnitt betitelt „Welche Kompetenzen Sie erwerben und zeigen“- Sie erklären Pages,
ctidund das PGDATA-Verzeichnis. - Sie verstehen MVCC, Table Bloat und die Rolle von
VACUUM. - Sie vergleichen logische und physische Backups.
- Sie messen Bloat und skizzieren einen PITR-Ablauf.
Pädagogische Einordnung
Abschnitt betitelt „Pädagogische Einordnung“- Reproduktion: die physische Struktur untersuchen (Teil A).
- Reorganisation und Transfer: MVCC und Backups nachvollziehen (Teile B und C).
- Reflexion, Problemlösung und Urteilsbildung: Bloat messen und PITR skizzieren (Teil D).
Arbeitsaufträge
Abschnitt betitelt „Arbeitsaufträge“Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.
Teil A - Anatomie einer Tabelle
Abschnitt betitelt „Teil A - Anatomie einer Tabelle“- Herausfinden, in welchem Verzeichnis die PostgreSQL-Daten (
PGDATA) liegen. - Die Standard-Page-Size bestimmen und angeben, ob und wie sie konfigurierbar ist.
SELECT ctid, customer_id, company_name FROM customers LIMIT 5;ausführen. Erklären, wasctid(z. B.(0,1)) über den physischen Ort einer Zeile aussagt und warum PostgreSQL feste 8-KB-Blöcke statt zeilenweiser Dateien nutzt.
Teil B - MVCC
Abschnitt betitelt „Teil B - MVCC“- Den Namen eines Kunden ändern und den
ctidvorher und nachher vergleichen. - Erklären, was mit der alten Zeilenversion nach einem Update geschieht, was Table Bloat ist, wie
VACUUMdamit zusammenhängt und welcher Hintergrundprozess tote Tupel automatisch entfernt.
Teil C - Logisches vs. physisches Backup
Abschnitt betitelt „Teil C - Logisches vs. physisches Backup“- Ein logisches Backup von
northwind_permissionsmitpg_dumperstellen und in der.sql-Datei prüfen, welche Informationen (Struktur, Daten, Indizes) enthalten sind. - Ein physisches Backup mit
pg_basebackuperstellen. Beide Methoden nach Anwendungsfall, Vor- und Nachteilen vergleichen. Begründen: Warum ist eincp/zipdes laufenden Datenverzeichnisses gefährlich? Warum ist ein logisches Backup beim Wechsel auf eine neuere PostgreSQL-Version im Vorteil? Warum bevorzugt man bei mehreren Terabyte physische Backups?
Teil D - Expertenteil: Bloat messen und PITR skizzieren
Abschnitt betitelt „Teil D - Expertenteil: Bloat messen und PITR skizzieren“- Bloat messen: Eine Testtabelle mit vielen Zeilen anlegen (z. B.
generate_series), ihre Größe mitpg_total_relation_sizebzw.\dt+notieren, dann alle Zeilen perUPDATEeinmal ändern und die Größe erneut messen. Erklären, warum die Tabelle gewachsen ist, obwohl sich die Zeilenzahl nicht geändert hat. - VACUUM anwenden:
VACUUMausführen und die Größe erneut prüfen; dannVACUUM FULLausführen und die Größe ein drittes Mal messen. Den Unterschied erklären:VACUUMgibt Platz nur intern frei,VACUUM FULLgibt ihn an das Betriebssystem zurück (mit exklusiver Sperre). - PITR skizzieren: Angenommen, ein Mitarbeiter löscht um 14:05 Uhr alle Bestelldaten, das letzte Voll-Backup ist von Mitternacht. Skizzieren Sie den Ablauf eines Point-in-Time Recovery und nennen Sie die zwei zwingend nötigen Komponenten (Base Backup und archivierte WAL-Segmente). Erklären Sie in drei bis vier Sätzen, warum das WAL das Zurückspielen auf eine exakte Sekunde erlaubt und worin sich ein einfacher Restore von einem Forward-Replay der Logs unterscheidet.
Wissenscheck
Abschnitt betitelt „Wissenscheck“- Was sagt der
ctidüber eine Zeile aus? - Warum erzeugt ein
UPDATEin PostgreSQL eine neue Zeilenversion? - Worin unterscheiden sich
VACUUMundVACUUM FULL? - Warum ist ein logisches Backup portabler als ein physisches?
- Welche zwei Komponenten braucht ein Point-in-Time Recovery?
- Ein Dokument mit den Antworten, den Screenshots der SQL-Ausgaben (
ctid, Größenmessungen vor/nach VACUUM) und der PITR-Skizze aus Teil D.
HTL Villach, 2025-2026,
https://www.htl-villach.at