Technische Tipps: Wie sichere und stelle ich die Postgres-Datenbank wieder her?

Karan Singh

19.06.2013

E-Mail

1 min read

Technische Tipps: Wie sichere und stelle ich die Postgres-Datenbank wieder her?

Wichtige Erkenntnisse

    • PostgreSQL-Backups können je nach Bedarf auf einzelne Tabellen, eine einzelne Datenbank oder alle Datenbanken abzielen.

    • pg_dump erstellt eine SQL-Textdatei, die die DDL und die Daten enthält, die zum Wiederherstellen der Zieltabelle oder -datenbank benötigt werden.

    • pg_dumpall sichert alle Datenbanken auf der Postgres-Instanz.

    • Die Wiederherstellung erfolgt mit psql, das den SQL-Dump zurück in die Zieldatenbank ausführt.

    • Bei Tabellenebenen-Wiederherstellungen muss sichergestellt werden, dass die Tabelle nicht bereits existiert, um Konflikte zu vermeiden.

    • Beim Sichern einzelner Tabellen sollten Sie auf relationale Abhängigkeiten achten.

    • Dumps können von lokalen Postgres-Instanzen genommen und auf Remote-Postgres-Instanzen wiederhergestellt werden.

    • Backups beinhalten CREATE-, ALTER- und COPY-Befehle, abhängig davon, was exportiert wird.

    • Die richtige Backup-Strategie hängt vom Verständnis der Tabellenbeziehungen, der Verwendung von Schemata und den Bereitstellungsumgebungen ab.

    • Stellen Sie immer die Datenintegrität sicher, indem Sie Backups erstellen, die bei Bedarf referenzierte Tabellen enthalten.

Q&A Highlights

  • Was macht pg_dump tatsächlich?

    pg_dump erzeugt eine textbasierte SQL-Datei, die den vollständigen Satz von Befehlen enthält, um eine Tabelle oder Datenbank genau so wiederherzustellen, wie sie zum Zeitpunkt der Sicherung existierte.

  • Kann ich nur eine Tabelle statt einer gesamten Datenbank sichern?

    Ja. Verwenden Sie pg_dump --table TABLENAME, um eine spezifische Tabelle zu exportieren. Falls Tabellen mit demselben Namen in verschiedenen Schemata existieren, verwenden Sie --schema, um das richtige anzugeben.

  • Sollte ich mir Sorgen über verwandte Tabellen machen, wenn ich eine einzelne Tabelle sichere?

    Absolut. PostgreSQL ist relational, daher könnten andere Tabellen auf die Tabelle verweisen, die Sie sichern. Wenn Sie nur eine Tabelle ohne die zugehörigen wiederherstellen, können Sie die referenzielle Integrität gefährden.

  • Wie sichere ich eine vollständige Datenbank?

    Führen Sie einen Befehl aus wie:

    pg_dump -U <user> <database> -f <output.sql>

    Dies exportiert alle Tabellen, Schemadefinitionen, Indizes und Daten für diese Datenbank.

  • Was macht pg_dumpall?

    pg_dumpall sichert jede Datenbank auf dem Server in einer einzigen SQL-Datei. Es ist nützlich bei der Migration oder Erstellung eines Snapshots einer gesamten Postgres-Instanz.

  • Kann ich eine Tabelle in eine bestehende Datenbank wiederherstellen?

    Ja. Verwenden Sie psql -U <user> -f <file.sql> <database>.

    Aber stellen Sie sicher, dass die Tabelle nicht bereits existiert — andernfalls erhalten Sie während der Wiederherstellung „existiert bereits“-Fehler.

  • Was passiert während eines vollständigen Datenbank-Restore?

    Die Wiederherstellungsdatei wird ausgeführt:

    • CREATE TABLE

    • ALTER TABLE

    • COPY (für Tabellendaten)
      um die Datenbank wieder in ihren genauen Zustand zum Zeitpunkt der Sicherung zu versetzen.

  • Kann ich zu einem anderen Server als dem, von dem ich gesichert habe, wiederherstellen?

    Ja. Dumps sind portabel. Sie können ein Backup lokal erstellen und es auf eine entfernte Postgres-Instanz wiederherstellen, vorausgesetzt, die Versionen sind kompatibel.

  • Beeinflusst pg_dump die laufende Datenbank?

    Nein. Es funktioniert über SQL-Abfragen und sperrt nicht die gesamte Datenbank. Es erfasst sicher eine konsistente Momentaufnahme.

  • Wie stelle ich alle Datenbanken aus einer pg_dumpall-Datei wieder her?

    Verwendung:

    psql -U <user> -f all_dump.sql

    Dies stellt jede in der Dump-Datei gefundene Datenbank wieder her.

Zuerst ein Haftungsausschluss. Dieser Beitrag bietet eine allgemeine Anleitung zum Sichern einer Postgres-Datenbanktabelle. Die bereitgestellten Beispiele beziehen sich nicht auf eine bestimmte Tabelle oder Datenbank. Wenn Sie versuchen, eine bestimmte Tabelle zu sichern, sollten Sie auch Tabellen sichern, die sich auf die ursprünglichen Tabellen beziehen. Da Postgres eine relationale Datenbank ist, wird es immer Verweise zwischen mehreren Tabellen geben.

Dies ist ein „How to“-Dokument, das nur Beispielbefehle gibt. Wie es tatsächlich gemacht wird, hängt allein von der Person ab, die es durchführt, und von den spezifischen Anwendungsfällen. Bewahren Sie immer die Integrität der Daten, die Sie sichern möchten. Die Sicherung der gesamten Datenbank ist immer eine sichere Option, aber wenn man spezifische Tabellen sichert, muss man vorsichtig sein.

Zuerst ein Haftungsausschluss. Dieser Beitrag bietet eine allgemeine Anleitung zum Sichern einer Postgres-Datenbanktabelle. Die bereitgestellten Beispiele beziehen sich nicht auf eine bestimmte Tabelle oder Datenbank. Wenn Sie versuchen, eine bestimmte Tabelle zu sichern, sollten Sie auch Tabellen sichern, die sich auf die ursprünglichen Tabellen beziehen. Da Postgres eine relationale Datenbank ist, wird es immer Verweise zwischen mehreren Tabellen geben.

Dies ist ein „How to“-Dokument, das nur Beispielbefehle gibt. Wie es tatsächlich gemacht wird, hängt allein von der Person ab, die es durchführt, und von den spezifischen Anwendungsfällen. Bewahren Sie immer die Integrität der Daten, die Sie sichern möchten. Die Sicherung der gesamten Datenbank ist immer eine sichere Option, aber wenn man spezifische Tabellen sichert, muss man vorsichtig sein.

Zuerst ein Haftungsausschluss. Dieser Beitrag bietet eine allgemeine Anleitung zum Sichern einer Postgres-Datenbanktabelle. Die bereitgestellten Beispiele beziehen sich nicht auf eine bestimmte Tabelle oder Datenbank. Wenn Sie versuchen, eine bestimmte Tabelle zu sichern, sollten Sie auch Tabellen sichern, die sich auf die ursprünglichen Tabellen beziehen. Da Postgres eine relationale Datenbank ist, wird es immer Verweise zwischen mehreren Tabellen geben.

Dies ist ein „How to“-Dokument, das nur Beispielbefehle gibt. Wie es tatsächlich gemacht wird, hängt allein von der Person ab, die es durchführt, und von den spezifischen Anwendungsfällen. Bewahren Sie immer die Integrität der Daten, die Sie sichern möchten. Die Sicherung der gesamten Datenbank ist immer eine sichere Option, aber wenn man spezifische Tabellen sichert, muss man vorsichtig sein.

SQL-dump/pg_dump:

Die Idee hinter der SQL-Dump-Methode ist es, eine Textdatei mit SQL-Befehlen zu erstellen, die, wenn sie zurück an den Server übergeben wird, die Datenbank in demselben Zustand wiederherstellen, in dem sie sich zum Zeitpunkt des Dumps befand. PostgreSQL stellt das Dienstprogramm pg_dump für diesen Zweck bereit.

pg_dump ist ein effektives und umfassendes Tool, um Postgres-Datenbank-Backups zu erstellen und die Backups zur Wiederherstellung der Postgres-Datenbank zu verwenden. Es ist jedoch nicht nur auf die Datenbank beschränkt. Wir können pg_dump verwenden, um Tabellen zu sichern und diese dann zur Wiederherstellung einzelner Tabellen zu nutzen. Mit pg_dump können Sie die lokale Datenbank sichern und auf einer entfernten Datenbank wiederherstellen.

Die Idee hinter der SQL-Dump-Methode ist es, eine Textdatei mit SQL-Befehlen zu erstellen, die, wenn sie zurück an den Server übergeben wird, die Datenbank in demselben Zustand wiederherstellen, in dem sie sich zum Zeitpunkt des Dumps befand. PostgreSQL stellt das Dienstprogramm pg_dump für diesen Zweck bereit.

pg_dump ist ein effektives und umfassendes Tool, um Postgres-Datenbank-Backups zu erstellen und die Backups zur Wiederherstellung der Postgres-Datenbank zu verwenden. Es ist jedoch nicht nur auf die Datenbank beschränkt. Wir können pg_dump verwenden, um Tabellen zu sichern und diese dann zur Wiederherstellung einzelner Tabellen zu nutzen. Mit pg_dump können Sie die lokale Datenbank sichern und auf einer entfernten Datenbank wiederherstellen.

Die Idee hinter der SQL-Dump-Methode ist es, eine Textdatei mit SQL-Befehlen zu erstellen, die, wenn sie zurück an den Server übergeben wird, die Datenbank in demselben Zustand wiederherstellen, in dem sie sich zum Zeitpunkt des Dumps befand. PostgreSQL stellt das Dienstprogramm pg_dump für diesen Zweck bereit.

pg_dump ist ein effektives und umfassendes Tool, um Postgres-Datenbank-Backups zu erstellen und die Backups zur Wiederherstellung der Postgres-Datenbank zu verwenden. Es ist jedoch nicht nur auf die Datenbank beschränkt. Wir können pg_dump verwenden, um Tabellen zu sichern und diese dann zur Wiederherstellung einzelner Tabellen zu nutzen. Mit pg_dump können Sie die lokale Datenbank sichern und auf einer entfernten Datenbank wiederherstellen.

So sichern Sie eine Postgres-Datenbank:

Sichere eine Postgres-Tabelle:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Der obige Befehl ist ein Beispiel dafür, wie man eine bestimmte Tabelle aus einer Postgres-Datenbank sichert. Mit dem obigen Befehl sichern wir die Tabelle ‘orgs’ im Schema ‘maincontrol’  aus der Datenbank ‘pe’ in die Datei ms_table.sql. Um eine bestimmte Tabelle zu sichern, verwenden Sie die Option –table TABLENAME im pg_dump-Befehl. Wenn es in verschiedenen Schemata gleiche Tabellennamen gibt, verwenden Sie die –schema SCHEMANAME-Option.

  1. Sichere eine spezifische Postgres-Datenbank :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Dies ist ein Beispiel für die Sicherung einer speziellen Postgres-Datenbank. Mit dem obigen Befehl sichern wir die Datenbank für Message Central ‘pe’ in die Datei pe_dump.sql. Die Sicherungsdatei enthält create table-, alter table- und copy-Befehle für alle Tabellen in der ‘pe’-Datenbank.

  2. Sichere alle Postgres-Datenbanken :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Sie können alle Datenbanken mit dem pg_dumpall-Befehl sichern. Der obige Befehl erstellt ein Dump von allen Datenbanken, die auf der Postgres-Instanz auf einem bestimmten Server laufen. Um alle Datenbanken aufzulisten, die gesichert wurden, verwenden Sie den Befehl grep “^[\]connect” all.sql.

Sichere eine Postgres-Tabelle:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Der obige Befehl ist ein Beispiel dafür, wie man eine bestimmte Tabelle aus einer Postgres-Datenbank sichert. Mit dem obigen Befehl sichern wir die Tabelle ‘orgs’ im Schema ‘maincontrol’  aus der Datenbank ‘pe’ in die Datei ms_table.sql. Um eine bestimmte Tabelle zu sichern, verwenden Sie die Option –table TABLENAME im pg_dump-Befehl. Wenn es in verschiedenen Schemata gleiche Tabellennamen gibt, verwenden Sie die –schema SCHEMANAME-Option.

  1. Sichere eine spezifische Postgres-Datenbank :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Dies ist ein Beispiel für die Sicherung einer speziellen Postgres-Datenbank. Mit dem obigen Befehl sichern wir die Datenbank für Message Central ‘pe’ in die Datei pe_dump.sql. Die Sicherungsdatei enthält create table-, alter table- und copy-Befehle für alle Tabellen in der ‘pe’-Datenbank.

  2. Sichere alle Postgres-Datenbanken :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Sie können alle Datenbanken mit dem pg_dumpall-Befehl sichern. Der obige Befehl erstellt ein Dump von allen Datenbanken, die auf der Postgres-Instanz auf einem bestimmten Server laufen. Um alle Datenbanken aufzulisten, die gesichert wurden, verwenden Sie den Befehl grep “^[\]connect” all.sql.

Sichere eine Postgres-Tabelle:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Der obige Befehl ist ein Beispiel dafür, wie man eine bestimmte Tabelle aus einer Postgres-Datenbank sichert. Mit dem obigen Befehl sichern wir die Tabelle ‘orgs’ im Schema ‘maincontrol’  aus der Datenbank ‘pe’ in die Datei ms_table.sql. Um eine bestimmte Tabelle zu sichern, verwenden Sie die Option –table TABLENAME im pg_dump-Befehl. Wenn es in verschiedenen Schemata gleiche Tabellennamen gibt, verwenden Sie die –schema SCHEMANAME-Option.

  1. Sichere eine spezifische Postgres-Datenbank :

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Dies ist ein Beispiel für die Sicherung einer speziellen Postgres-Datenbank. Mit dem obigen Befehl sichern wir die Datenbank für Message Central ‘pe’ in die Datei pe_dump.sql. Die Sicherungsdatei enthält create table-, alter table- und copy-Befehle für alle Tabellen in der ‘pe’-Datenbank.

  2. Sichere alle Postgres-Datenbanken :

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Sie können alle Datenbanken mit dem pg_dumpall-Befehl sichern. Der obige Befehl erstellt ein Dump von allen Datenbanken, die auf der Postgres-Instanz auf einem bestimmten Server laufen. Um alle Datenbanken aufzulisten, die gesichert wurden, verwenden Sie den Befehl grep “^[\]connect” all.sql.

Wie man eine Postgres-Datenbank wiederherstellt

  1. Stellen Sie eine Postgres-Tabelle wieder her:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Der obige Befehl installiert die Tabelle, die in der Datei ms_table.sql gesichert wurde, in der 'pe'-Datenbank. Stellen Sie sicher, dass diese Tabelle nicht bereits existiert, ansonsten erhalten Sie eine Reihe von ‚bereits existiert‘-Fehlern. Dieser Befehl erstellt die Tabelle und exportiert alle Daten in die neu erstellte Tabelle.

  2. Stellen Sie eine Postgres-Datenbank wieder her:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Ähnlich wie bei der Wiederherstellung der Tabelle, können wir den obigen Befehl verwenden, um die komplette Datenbank wiederherzustellen. Hier stellen wir die 'pe'-Datenbank mit der Datei pe_dump.sql wieder her, die wir beim Sichern der Datenbank im oben genannten Sicherungsabschnitt erstellt hatten.

  3. Stellen Sie alle Datenbanken wieder her:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Stellen Sie alle Datenbanken mit dem obigen Befehl wieder her. ‚all_dump.sql‘ war die Datei, die mit pg_dumpall erstellt wurde. Der obige Befehl liefert uns alle Postgres-Datenbanken in dem exakten Zustand, in dem sie sich befanden, als ein Dump vom ursprünglichen Datenbankserver gemacht wurde.

  1. Stellen Sie eine Postgres-Tabelle wieder her:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Der obige Befehl installiert die Tabelle, die in der Datei ms_table.sql gesichert wurde, in der 'pe'-Datenbank. Stellen Sie sicher, dass diese Tabelle nicht bereits existiert, ansonsten erhalten Sie eine Reihe von ‚bereits existiert‘-Fehlern. Dieser Befehl erstellt die Tabelle und exportiert alle Daten in die neu erstellte Tabelle.

  2. Stellen Sie eine Postgres-Datenbank wieder her:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Ähnlich wie bei der Wiederherstellung der Tabelle, können wir den obigen Befehl verwenden, um die komplette Datenbank wiederherzustellen. Hier stellen wir die 'pe'-Datenbank mit der Datei pe_dump.sql wieder her, die wir beim Sichern der Datenbank im oben genannten Sicherungsabschnitt erstellt hatten.

  3. Stellen Sie alle Datenbanken wieder her:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Stellen Sie alle Datenbanken mit dem obigen Befehl wieder her. ‚all_dump.sql‘ war die Datei, die mit pg_dumpall erstellt wurde. Der obige Befehl liefert uns alle Postgres-Datenbanken in dem exakten Zustand, in dem sie sich befanden, als ein Dump vom ursprünglichen Datenbankserver gemacht wurde.

  1. Stellen Sie eine Postgres-Tabelle wieder her:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Der obige Befehl installiert die Tabelle, die in der Datei ms_table.sql gesichert wurde, in der 'pe'-Datenbank. Stellen Sie sicher, dass diese Tabelle nicht bereits existiert, ansonsten erhalten Sie eine Reihe von ‚bereits existiert‘-Fehlern. Dieser Befehl erstellt die Tabelle und exportiert alle Daten in die neu erstellte Tabelle.

  2. Stellen Sie eine Postgres-Datenbank wieder her:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Ähnlich wie bei der Wiederherstellung der Tabelle, können wir den obigen Befehl verwenden, um die komplette Datenbank wiederherzustellen. Hier stellen wir die 'pe'-Datenbank mit der Datei pe_dump.sql wieder her, die wir beim Sichern der Datenbank im oben genannten Sicherungsabschnitt erstellt hatten.

  3. Stellen Sie alle Datenbanken wieder her:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Stellen Sie alle Datenbanken mit dem obigen Befehl wieder her. ‚all_dump.sql‘ war die Datei, die mit pg_dumpall erstellt wurde. Der obige Befehl liefert uns alle Postgres-Datenbanken in dem exakten Zustand, in dem sie sich befanden, als ein Dump vom ursprünglichen Datenbankserver gemacht wurde.

Andere Neuigkeiten

Mehr lesen aus dieser Kategorie

A person is standing at a desk while typing on a laptop.

Die komplette AI-native Plattform, die mit Ihrem Business skalierbar ist.

A person is standing at a desk while typing on a laptop.

Die komplette AI-native Plattform, die mit Ihrem Business skalierbar ist.