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
. - Mit dem Dienstprogramm
pg_dumpall
können Sie alle PostgreSQL-Datenbanken eines Clusters 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-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.
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
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 einzige Skriptdatei extrahieren können. Diese Datei enthält SQL-Befehle, mit denen Sie die Datenbanken wiederherstellen können.
Zum Exportieren aller PostgreSQL-Datenbanken in eine Cloud SQL-Instanz 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 Datenbanken cloudsqladmin
oder template
.
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 Dump von Rollen mit pg_dumpall
ansehen möchten, legen Sie das Flag cloudsql.pg_authid_select_role
auf einen PostgreSQL-Rollennamen fest. Wenn die Rolle vorhanden ist, hat sie schreibgeschützten Zugriff (SELECT
) für 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 Daten aus mehreren Dateien parallel nur für Archive importieren, die mit den Ausgabeformaten directory
und custom
erstellt wurden.
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