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_dumppg_dumpall und pg_restore
Daten aus Cloud SQL for PostgreSQL exportieren
Sie können Cloud SQL verwenden, um einen Export über die Cloud de Confiance Console, die gcloud CLI oder die API auszuführen.
- Verwenden Sie das Dienstprogramm
pg_dump, um eine einzelne PostgreSQL-Datenbank zu exportieren. - Verwenden Sie das Dienstprogramm
pg_dumpall, um alle PostgreSQL-Datenbanken eines Clusters zu exportieren.
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-ownerDie Dumpdatei darf keine Änderungsbefehle für Eigentumsrechte enthalten.
--formatDie Formate
customunddirectorysind zulässig, wenn die Dumpdatei für die Verwendung mitpg_restorevorgesehen ist.Exportieren Sie für das
plain-text-Format stattdessen in einSQL dump file. Dieses Format ist nicht mitpg_restorekompatibel und muss mit dem Cloud de Confiance -Konsolenimportbefehl oder dempsql-Client importiert werden.--no-aclDieses Flag ist erforderlich, wenn Ihr Dump ansonsten Anweisungen zum Gewähren oder Widerrufen der Zuweisung einer
SUPERUSER-Rolle enthalten würde.--cleanMit 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-existsMit diesem optionalen Flag können Sie die SQL-Anweisung
IF EXISTSin jedeDROP-Anweisung einfügen, die durch das Flagcleangeneriert 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 parallel aus mehreren Dateien aus Cloud SQL for PostgreSQL exportieren
Sie können das Ausgabeformat directory nur verwenden, um Daten aus mehreren Dateien parallel 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 einzelne 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=cloudsqladminexclude-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 Rollenpasswörter beim Exportieren von Rollen mit pg_dumpall ansehen möchten, setzen Sie das Flag cloudsql.pg_authid_select_role auf einen PostgreSQL-Rollennamen. 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