PostgreSQL-Sicherung und -Wiederherstellung

PostgreSQLBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die wesentlichen Techniken für die Sicherung und Wiederherstellung von PostgreSQL-Datenbanken. Die ordnungsgemäße Verwaltung von Backups ist eine entscheidende Fähigkeit für jeden Datenbankadministrator, um Datenverlust zu verhindern.

Sie beginnen mit der Erstellung einer Beispieldatenbank und deren Befüllung mit Daten. Anschließend verwenden Sie das Dienstprogramm pg_dump, um ein vollständiges Backup der Datenbank zu erstellen. Danach lernen Sie, wie Sie die Datenbank aus der Backup-Datei mit dem Befehlszeilenwerkzeug psql wiederherstellen. Abschließend üben Sie die Sicherung und Wiederherstellung einer einzelnen, spezifischen Tabelle aus Ihrer Datenbank.

Beispiel-Datenbank erstellen und befüllen

In diesem Schritt erstellen Sie eine PostgreSQL-Datenbank namens salesdb und befüllen sie mit Beispieldaten. Diese Datenbank dient als Grundlage für die Backup- und Wiederherstellungsoperationen in den folgenden Schritten.

Schritt 1: Datenbank erstellen

Erstellen Sie zunächst über Ihr Terminal die Datenbank salesdb mit dem Befehlszeilenwerkzeug createdb. Dies ist ein praktischer Wrapper für den SQL-Befehl CREATE DATABASE.

createdb salesdb

Schritt 2: Mit der Datenbank verbinden

Verbinden Sie sich anschließend mit Ihrer neu erstellten Datenbank salesdb über das interaktive Terminal psql.

psql -d salesdb

Sie sehen nun die psql-Eingabeaufforderung, die wie salesdb=# aussieht und anzeigt, dass Sie mit der Datenbank salesdb verbunden sind.

Schritt 3: Tabellen erstellen und Daten einfügen

Führen Sie innerhalb der psql-Shell die folgenden SQL-Befehle aus, um zwei Tabellen zu erstellen: customers und products.

Erstellen Sie die Tabelle customers:

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

Erstellen Sie die Tabelle products:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(10, 2)
);

Fügen Sie nun einige Beispieldaten in beide Tabellen ein.

Daten in customers einfügen:

INSERT INTO customers (name) VALUES ('Alice'), ('Bob');

Daten in products einfügen:

INSERT INTO products (name, price) VALUES ('Laptop', 1200.00), ('Mouse', 25.00);

Schritt 4: Daten überprüfen

Um zu bestätigen, dass die Daten korrekt eingefügt wurden, führen Sie SELECT-Abfragen für beide Tabellen aus.

SELECT * FROM customers;

Die Ausgabe sollte wie folgt aussehen:

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Überprüfen Sie nun die Tabelle products:

SELECT * FROM products;

Die Ausgabe sollte wie folgt aussehen:

 id |  name  |  price
----+--------+---------
  1 | Laptop | 1200.00
  2 | Mouse  |   25.00
(2 rows)

Beenden Sie schließlich die psql-Shell, um zu Ihrem normalen Terminal zurückzukehren.

\q

Sie haben die Datenbank erfolgreich für die nächsten Schritte eingerichtet.

Gesamte Datenbank sichern

In diesem Schritt verwenden Sie das Dienstprogramm pg_dump, um ein vollständiges Backup der Datenbank salesdb zu erstellen. pg_dump generiert eine Datei, die SQL-Befehle enthält, mit denen die Datenbank rekonstruiert werden kann.

Verständnis von pg_dump

pg_dump ist ein Standard-PostgreSQL-Dienstprogramm zur Sicherung einer einzelnen Datenbank. Es erstellt einen konsistenten Schnappschuss der Datenbank, auch wenn diese aktiv genutzt wird. Standardmäßig generiert es eine reine Text-SQL-Skriptdatei.

Schritt 1: Backup durchführen

Führen Sie über Ihr Terminal den folgenden Befehl aus, um die Datenbank salesdb in eine Datei namens salesdb.sql in Ihrem Projektverzeichnis zu sichern.

pg_dump salesdb > ~/project/salesdb.sql

Lassen Sie uns den Befehl aufschlüsseln:

  • pg_dump salesdb: Dies gibt an, dass Sie die Datenbank salesdb sichern möchten.
  • > ~/project/salesdb.sql: Dies leitet die Standardausgabe des Befehls in eine Datei namens salesdb.sql im Verzeichnis ~/project um.

Schritt 2: Backup-Datei überprüfen

Überprüfen Sie zunächst mit dem Befehl ls, ob die Datei erstellt wurde.

ls -l ~/project

Sie sollten salesdb.sql in der Dateiliste sehen.

Untersuchen Sie als Nächstes den Inhalt der Backup-Datei, um zu verstehen, was pg_dump erstellt hat. Verwenden Sie den Befehl head, um die ersten Zeilen anzuzeigen.

head ~/project/salesdb.sql

Die Ausgabe zeigt den Anfang des SQL-Skripts, einschließlich Kommentaren zur pg_dump-Version und Befehlen zur Einrichtung der Datenbankumgebung. Dies bestätigt, dass Ihre Backup-Datei ein gültiges SQL-Skript ist.

Datenbank aus Sicherung wiederherstellen

In diesem Schritt lernen Sie, wie Sie eine Datenbank aus einer reinen Text-SQL-Backup-Datei wiederherstellen. Sie erstellen eine neue Datenbank und verwenden dann das Dienstprogramm psql, um die SQL-Befehle aus Ihrer Backup-Datei auszuführen.

Datenbankwiederherstellung verstehen

Für reine Text-SQL-Dateien, die von pg_dump erstellt wurden, ist das Dienstprogramm psql das Standardwerkzeug für die Wiederherstellung. Es liest die SQL-Befehle aus der Datei und führt sie gegen die angegebene Datenbank aus, wodurch Tabellen und Daten effektiv neu erstellt werden.

Schritt 1: Eine neue Datenbank für die Wiederherstellung erstellen

Um Ihre ursprüngliche Datenbank nicht zu überschreiben, stellen Sie das Backup in einer neuen, leeren Datenbank wieder her. Erstellen Sie eine Datenbank namens salesdb_restored.

createdb salesdb_restored

Schritt 2: Das Backup wiederherstellen

Verwenden Sie nun psql, um das Backup salesdb.sql in die Datenbank salesdb_restored wiederherzustellen.

psql -d salesdb_restored -f ~/project/salesdb.sql

Lassen Sie uns den Befehl aufschlüsseln:

  • psql: Das interaktive PostgreSQL-Terminal, das auch Skriptdateien ausführen kann.
  • -d salesdb_restored: Gibt die Zieldatenbank für die Wiederherstellung an.
  • -f ~/project/salesdb.sql: Gibt die Eingabedatei an, die die auszuführenden SQL-Befehle enthält.

Sie sehen die Ausgabe der ausgeführten SQL-Befehle, wie z. B. CREATE TABLE und INSERT.

Schritt 3: Die wiederhergestellte Datenbank überprüfen

Verbinden Sie sich mit der Datenbank salesdb_restored, um zu überprüfen, ob die Tabellen und Daten erfolgreich wiederhergestellt wurden.

psql -d salesdb_restored

Listen Sie innerhalb der psql-Shell zuerst die Tabellen auf:

\dt

Sie sollten die Tabellen customers und products sehen.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | customers | table | labex
 public | products  | table | labex
(2 rows)

Fragen Sie als Nächstes die Tabelle customers ab, um sicherzustellen, dass die Daten vorhanden sind.

SELECT * FROM customers;

Die Ausgabe sollte mit den ursprünglichen Daten übereinstimmen.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Beenden Sie die psql-Shell.

\q

Sie haben erfolgreich eine Datenbank aus einem Backup wiederhergestellt.

Einzelne Tabelle sichern und wiederherstellen

Manchmal müssen Sie möglicherweise nur eine bestimmte Tabelle sichern oder wiederherstellen, anstatt die gesamte Datenbank. Das Dienstprogramm pg_dump unterstützt dies mit der Option -t.

Schritt 1: Eine einzelne Tabelle sichern

Sichern wir nur die Tabelle customers aus der ursprünglichen Datenbank salesdb.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

pg_dump -d salesdb -t customers > ~/project/customers_table.sql
  • -d salesdb: Gibt die Quellendatenbank an.
  • -t customers: Gibt die Zieltabelle an, die gesichert werden soll.
  • > ~/project/customers_table.sql: Leitet die Ausgabe in eine neue Backup-Datei um.

Schritt 2: Datenverlust simulieren

Um den Wiederherstellungsprozess zu demonstrieren, löschen wir zunächst die Tabelle customers aus der Datenbank salesdb_restored, um eine versehentliche Löschung zu simulieren.

psql -d salesdb_restored -c "DROP TABLE customers;"

Der Befehl gibt DROP TABLE aus, was die Löschung bestätigt.

Schritt 3: Die einzelne Tabelle wiederherstellen

Stellen Sie nun die Tabelle customers aus Ihrer tabellenspezifischen Backup-Datei in der Datenbank salesdb_restored wieder her.

psql -d salesdb_restored -f ~/project/customers_table.sql

Schritt 4: Die Tabellenwiederherstellung überprüfen

Verbinden Sie sich schließlich mit der Datenbank salesdb_restored und überprüfen Sie, ob die Tabelle customers wieder vorhanden ist, während die Tabelle products unberührt bleibt.

psql -d salesdb_restored

Listen Sie innerhalb von psql die Tabellen auf:

\dt

Sie sollten beide Tabellen customers und products wieder aufgelistet sehen.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | products  | table | labex
 public | customers | table | labex
(2 rows)

Fragen Sie die wiederhergestellte Tabelle customers ab, um zu bestätigen, dass ihre Daten intakt sind.

SELECT * FROM customers;

Die Ausgabe sollte die ursprünglichen Kundendaten anzeigen.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Beenden Sie die psql-Shell.

\q

Sie haben erfolgreich eine einzelne Tabelle gesichert und wiederhergestellt.

Zusammenfassung

In diesem Lab haben Sie die grundlegenden Verfahren zur Sicherung und Wiederherstellung von PostgreSQL-Datenbanken kennengelernt. Diese Fähigkeiten sind für den Datenschutz und die Notfallwiederherstellung unerlässlich.

Sie haben gelernt, wie Sie:

  • Eine Datenbank erstellen und mit Tabellen und Daten befüllen.
  • pg_dump verwenden, um eine gesamte Datenbank in eine reine Text-SQL-Datei zu exportieren.
  • psql verwenden, um eine Datenbank aus einer SQL-Backup-Datei in eine neue Datenbank wiederherzustellen.
  • Eine einzelne Tabelle aus einer Datenbank mithilfe der Option -t mit pg_dump sichern.
  • Eine einzelne Tabelle in eine Datenbank wiederherstellen.

Die Beherrschung dieser Befehle gibt Ihnen das Vertrauen, Ihre PostgreSQL-Daten effektiv zu verwalten und zu schützen.