Mithilfe von pg_dump, pg_dumpall und pg_restore exportieren und importieren

Auf dieser Seite wird gezeigt, wie Sie Daten mithilfe von pg_dump, pg_dumpall und pg_restore exportieren und in Cloud SQL-Instanzen importieren.

Hinweis

Exporte verwenden Datenbankressourcen, stören den normalen Datenbankbetrieb jedoch nicht, wenn die Instanz nicht unterdimensioniert ist.

Best Practices finden Sie unter Best Practices zum Importieren und Exportieren von Daten.

Prüfen Sie die Ergebnisse nach Abschluss eines Importvorgangs.

Weitere Informationen zu den Dienstprogrammen pg_dump, pg_dumpall und pg_restore.

Daten aus Cloud SQL for PostgreSQL exportieren

Sie können Cloud SQL verwenden, um einen Export über die Google Cloud Console, die gcloud CLI oder die API auszuführen.

  • Verwenden Sie zum Exportieren einer einzelnen PostgreSQL-Datenbank das Dienstprogramm pg_dump.
  • Verwenden Sie zum Exportieren aller PostgreSQL-Datenbanken eines Clusters das Dienstprogramm pg_dumpall.

Achten Sie bei der Verwendung jedes der Dienstprogramme darauf, dass Sie auch die erforderlichen Optionen verwenden, damit die resultierende Exportdatei für den Rückimport in Cloud SQL gültig ist.

Daten mit pg_dump von einem lokalen PostgreSQL-Server exportieren

Wenn Sie eine Datenbank exportieren möchten, die nicht von Cloud SQL verwaltet wird, um sie später in Cloud SQL zu importieren, verwenden Sie das Dienstprogramm pg_dump mit den folgenden Flags:

  • --no-owner

    Die Dumpdatei darf keine Änderungsbefehle für Eigentumsrechte enthalten.

  • --format

    Die Formate custom und directory sind zulässig, wenn die Dumpdatei für die Verwendung mit pg_restore vorgesehen ist.

    Exportieren Sie für das plain-text-Format stattdessen in ein SQL dump file. Dieses Format ist nicht mit pg_restore kompatibel und muss mit dem Importbefehl der Google Cloud Console oder dem psql-Client importiert werden.

  • --no-acl

    Dieses Flag ist erforderlich, wenn Ihr Dump ansonsten Anweisungen zum Gewähren oder Widerrufen der Zuweisung einer SUPERUSER-Rolle enthalten würde.

  • --clean

    Mit diesem optionalen Flag können Sie die SQL-Anweisung DROP <object> einfügen, die erforderlich ist, um Datenbankobjekten vor dem Import zu bereinigen (zu säubern).

  • --if-exists

    Mit diesem optionalen Flag können Sie die SQL-Anweisung IF EXISTS in jede DROP-Anweisung aufnehmen, die vom Flag clean generiert wird.

Darüber hinaus müssen Sie Folgendes entfernen:

  • Auf Erweiterungen bezogene Anweisungen, wenn Cloud SQL die jeweilige Erweiterung nicht unterstützt. Die Liste der unterstützten Erweiterungen finden Sie unter PostgreSQL-Erweiterungen.
  • CREATE EXTENSION- oder DROP EXTENSION-Anweisungen, die auf "plpgsql" verweisen. Diese Erweiterung ist auf Cloud SQL-Postgres-Instanzen vorinstalliert.
  • COMMENT ON EXTENSION ändern.

Prüfen Sie, ob die von den Datenbankeinstellungen festgelegte Standardcodierung für Ihre Daten korrekt ist. Bei Bedarf können Sie die Standardeinstellung mit dem Flag --encoding überschreiben.

Daten im Format custom aus Cloud SQL for PostgreSQL exportieren

Führen Sie pg_dump über eine Befehlszeile aus, um das benutzerdefinierte Format zu verwenden:

pg_dump \
-U USERNAME \
--format=custom \
--no-owner \
--no-acl \
DATABASE_NAME > DATABASE_NAME.dmp

Daten aus mehreren Dateien parallel aus Cloud SQL for PostgreSQL exportieren

Das Ausgabeformat directory können Sie nur verwenden, um Daten parallel aus mehreren Dateien zu exportieren.

Für den parallelen Export verwenden Sie das Flag -j NUM_CORES. NUM_CORES ist die Anzahl der Kerne auf der Quellinstanz.

Alle Datenbanken exportieren

pg_dumpall ist ein Dienstprogramm, mit dem Sie alle PostgreSQL-Datenbanken eines Clusters in eine einzige Skriptdatei extrahieren können. Diese Datei enthält SQL-Befehle, mit denen Sie die Datenbanken wiederherstellen können.

Wenn Sie alle PostgreSQL-Datenbanken in einer Cloud SQL-Instanz exportieren möchten, verwenden Sie das Dienstprogramm pg_dumpall mit den folgenden obligatorischen Flags:

  • exclude-database=cloudsqladmin
  • exclude-database=template*

Das Dienstprogramm pg_dumpall hat keinen Zugriff auf die cloudsqladmin- und template-Datenbanken.

Führen Sie den folgenden Befehl aus, um alle PostgreSQL-Datenbanken zu exportieren:

pg_dumpall \
-h HOST_NAME -l DATABASE_NAME –exclude-database=cloudsqladmin \
–exclude-database=template* > pg_dumpall.sql

Wenn Sie beim Auslesen von Rollen mit pg_dumpall Rollenpasswörter anzeigen lassen möchten, legen Sie das Flag cloudsql.pg_authid_select_role auf einen PostgreSQL-Rollennamen fest. Ist die Rolle vorhanden, so bietet sie Lesezugriff (SELECT) auf die Tabelle pg_authid. Diese Tabelle enthält Rollenpasswörter.

Importieren

Verwenden Sie das Dienstprogramm pg_restore, um ein Archiv in eine Cloud SQL-Datenbank zu importieren. pg_restore funktioniert nur mit Archiven, die von pg_dump im Format custom oder directory erstellt wurden. Weitere Informationen zu pg_restore.

Aus einer Dumpdatei, die mit dem Format custom erstellt wurde, in Cloud SQL for PostgreSQL importieren

Wenn die Dumpdatei mit benutzerdefiniertem Format erstellt wurde, führen Sie den folgenden Befehl aus:

pg_restore \
--list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' >  DATABASE_NAME.toc

Nach der Verarbeitung von sed werden alle Erweiterungsanweisungen in der SQL-Dumpdatei auskommentiert.

Geben Sie beim Importieren mit pg_restore das verarbeitete Inhaltsverzeichnis mit dem Befehlszeilenargument "--use-list=DATABASE_NAME.toc" an.

Daten aus mehreren Dateien parallel in Cloud SQL for PostgreSQL importieren

Sie können ausschließlich für Archive, die in den Ausgabeformaten directory oder custom erstellt wurden, Daten aus mehreren Dateien parallel importieren.

Für den parallelen Import verwenden Sie das Flag -j NUM_CORES. NUM_CORES ist die Anzahl der Kerne auf der Zielinstanz.

Importleistung in Cloud SQL for PostgreSQL

Nächste Schritte