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
unddirectory
sind zulässig, wenn die Dumpdatei für die Verwendung mitpg_restore
vorgesehen ist.Exportieren Sie für das
plain-text
-Format stattdessen in einSQL dump file
. Dieses Format ist nicht mitpg_restore
kompatibel und muss mit dem Importbefehl der Google Cloud Console oder dempsql
-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 jedeDROP
-Anweisung aufnehmen, die vom Flagclean
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
- oderDROP 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
- Status der Import- und Exportoperationen überprüfen
- Best Practices zum Importieren und Exportieren von Daten
- Mehr über das PostgreSQL-Dienstprogramm pg_dump erfahren
- Bekannte Probleme bei Importen und Exporten