PostgreSQL Backup und Wiederherstellung

PostgreSQLPostgreSQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie PostgreSQL-Datenbanken sichern und wiederherstellen können. Das Lab behandelt wesentliche Techniken zum Schutz Ihrer Daten, einschließlich des Exportierens einer Datenbank mit pg_dump, des Wiederherstellens einer Datenbank mit pg_restore und des Sicherns bestimmter Tabellen.

Sie beginnen mit der Erstellung einer Beispieldatenbank namens mydatabase. Anschließend exportieren Sie diese Datenbank mit dem Befehl pg_dump in eine SQL-Datei. Als Nächstes erfahren Sie, wie Sie eine Datenbank aus einer Sicherungsdatei mit pg_restore wiederherstellen. Abschließend lernen Sie, wie Sie nur bestimmte Tabellen innerhalb einer Datenbank sichern und die Integrität der wiederhergestellten Daten überprüfen.

Erstellen und Füllen einer Datenbank

In diesem Schritt erstellen Sie eine PostgreSQL-Datenbank namens mydatabase und füllen sie mit einigen Beispieldaten. Diese Datenbank wird für die Backup- und Wiederherstellungsübungen in den folgenden Schritten verwendet.

Erstellen Sie zunächst die Datenbank mydatabase mit dem folgenden Befehl:

sudo -u postgres psql -c "CREATE DATABASE mydatabase;"

Dieser Befehl verbindet sich als Benutzer postgres mit dem PostgreSQL-Server und führt den SQL-Befehl CREATE DATABASE mydatabase aus.

Verbinden Sie sich als Nächstes mit der Datenbank mydatabase mit dem Befehl psql:

sudo -u postgres psql -d mydatabase

Sie sollten sich nun in der psql-Shell befinden und mit der Datenbank mydatabase verbunden sein. Sie sehen eine Eingabeaufforderung wie mydatabase=#.

Erstellen Sie nun eine Tabelle namens users mit den Spalten id und name:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

Dieser SQL-Befehl erstellt eine Tabelle namens users mit zwei Spalten: id (eine automatisch inkrementierende Ganzzahl) und name (eine Zeichenkette).

Fügen Sie als Nächstes einige Beispieldaten in die Tabelle users ein:

INSERT INTO users (name) VALUES ('Alice');
INSERT INTO users (name) VALUES ('Bob');

Diese SQL-Befehle fügen zwei Zeilen in die Tabelle users ein, mit den Namen 'Alice' und 'Bob'.

Erstellen Sie abschließend eine weitere Tabelle namens products und fügen Sie einige Daten ein:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

INSERT INTO products (name) VALUES ('Laptop');
INSERT INTO products (name) VALUES ('Tablet');

Um zu überprüfen, ob die Tabellen und Daten erfolgreich erstellt wurden, können Sie die folgenden SQL-Abfragen ausführen:

SELECT * FROM users;
SELECT * FROM products;

Sie sollten die Daten sehen, die Sie gerade eingefügt haben.

Verlassen Sie die psql-Shell, indem Sie Folgendes eingeben:

\q

Sie befinden sich nun wieder im Linux-Terminal.

Exportieren der Datenbank

In diesem Schritt exportieren Sie die Datenbank mydatabase mit dem Befehl pg_dump in eine SQL-Datei. Diese Datei enthält die SQL-Befehle, die zum Neuerstellen der Datenbank erforderlich sind.

Führen Sie den folgenden Befehl aus, um die Datenbank zu exportieren:

pg_dump -U postgres -d mydatabase -f ~/project/mydatabase.sql

Dieser Befehl verwendet das Dienstprogramm pg_dump, um sich als Benutzer postgres mit der Datenbank mydatabase zu verbinden und die Datenbank in eine Datei namens mydatabase.sql in Ihrem Verzeichnis ~/project zu exportieren.

Um zu überprüfen, ob die Datei erfolgreich erstellt wurde, können Sie den Inhalt Ihres Verzeichnisses ~/project auflisten:

ls ~/project

Sie sollten mydatabase.sql in der Ausgabe sehen.

Sie können auch die ersten Zeilen der Sicherungsdatei mit dem Befehl head anzeigen:

head ~/project/mydatabase.sql

Dies zeigt Ihnen den Anfang des SQL-Skripts, das von pg_dump erstellt wurde.

Wiederherstellen der Datenbank

In diesem Schritt stellen Sie die Datenbank mydatabase aus der Sicherungsdatei mydatabase.sql in einer neuen Datenbank namens newdatabase wieder her.

Erstellen Sie zunächst die Datenbank newdatabase:

sudo -u postgres psql -c "CREATE DATABASE newdatabase;"

Stellen Sie nun die Datenbank aus der Sicherungsdatei wieder her:

pg_restore -U postgres -d newdatabase ~/project/mydatabase.sql

Dieser Befehl verwendet das Dienstprogramm pg_restore, um sich als Benutzer postgres mit der Datenbank newdatabase zu verbinden und die Datenbank aus der Datei mydatabase.sql wiederherzustellen.

Um zu überprüfen, ob die Datenbank erfolgreich wiederhergestellt wurde, verbinden Sie sich mit psql mit der Datenbank newdatabase:

sudo -u postgres psql -d newdatabase

Und listen Sie dann die Tabellen auf:

\dt

Sie sollten die Tabellen users und products aufgelistet sehen.

Sie können auch die Daten in den Tabellen abfragen, um zu überprüfen, ob sie korrekt wiederhergestellt wurden:

SELECT * FROM users;
SELECT * FROM products;

Sie sollten die gleichen Daten sehen, die Sie in Schritt 1 eingefügt haben.

Verlassen Sie die psql-Shell:

\q

Sichern und Wiederherstellen einer einzelnen Tabelle

In diesem Schritt lernen Sie, wie Sie eine einzelne Tabelle aus einer PostgreSQL-Datenbank sichern und wiederherstellen. Dies kann nützlich sein, wenn Sie nur einen bestimmten Teil Ihrer Datenbank sichern müssen.

Sichern wir zunächst nur die Tabelle users aus der Datenbank mydatabase:

pg_dump -U postgres -d mydatabase -t users -f ~/project/users_only.sql

Dieser Befehl verwendet die Option -t, um anzugeben, dass nur die Tabelle users gesichert werden soll.

Stellen wir nun diese Tabelle in der Datenbank newdatabase wieder her. Löschen Sie zunächst die vorhandene Tabelle users in newdatabase:

sudo -u postgres psql -d newdatabase -c "DROP TABLE IF EXISTS users;"

Stellen Sie dann die Tabelle users aus der Datei users_only.sql wieder her:

pg_restore -U postgres -d newdatabase ~/project/users_only.sql

Um zu überprüfen, ob die Tabelle erfolgreich wiederhergestellt wurde, verbinden Sie sich mit psql mit der Datenbank newdatabase:

sudo -u postgres psql -d newdatabase

Und listen Sie dann die Tabellen auf:

\dt

Sie sollten die Tabelle users aufgelistet sehen, aber nicht die Tabelle products (da wir nur die Tabelle users wiederhergestellt haben).

Sie können auch die Daten in der Tabelle users abfragen, um zu überprüfen, ob sie korrekt wiederhergestellt wurden:

SELECT * FROM users;

Sie sollten die gleichen Daten sehen, die sich in der Tabelle users in der Datenbank mydatabase befanden.

Verlassen Sie die psql-Shell:

\q

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie PostgreSQL-Datenbanken mit den Dienstprogrammen pg_dump und pg_restore sichern und wiederherstellen. Sie haben gelernt, wie man:

  • Eine Datenbank erstellt und mit Daten füllt.
  • Eine gesamte Datenbank mit pg_dump in eine SQL-Datei exportiert.
  • Eine Datenbank mit pg_restore aus einer SQL-Datei wiederherstellt.
  • Eine einzelne Tabelle aus einer Datenbank mit pg_dump sichert.
  • Eine einzelne Tabelle mit pg_restore in eine Datenbank wiederherstellt.

Dies sind wesentliche Fähigkeiten für jeden PostgreSQL-Datenbankadministrator.