Esporta e importa utilizzando pg_dump, pg_dumpall e pg_restore

Questa pagina descrive l'esportazione e l'importazione di dati nelle istanze Cloud SQL utilizzando pg_dump, pg_dumpall e pg_restore.

Prima di iniziare

Le esportazioni utilizzano risorse di database, ma non interferiscono con il normale database a meno che l'istanza non abbia un underprovisioning.

Per le best practice, vedi Best practice per l'importazione e Esportazione dei dati.

Dopo aver completato un'operazione di importazione, verify il che consentono di analizzare i dati e visualizzare i risultati.

Scopri di più su pg_dump, pg_dumpall e pg_restore utilità.

Esporta i dati da Cloud SQL per PostgreSQL

Puoi usare Cloud SQL per eseguire un'esportazione dalla console Google Cloud, gcloud CLI o l'API.

  • Per esportare un singolo database PostgreSQL, utilizza l'utilità pg_dump.
  • Per esportare tutti i database PostgreSQL di un cluster, utilizza l'utilità pg_dumpall.

Quando utilizzi una delle due utilità, assicurati di utilizzare anche le opzioni richieste per verifica che il file di esportazione risultante sia valido per l'importazione nuovamente in Cloud SQL.

Esporta i dati da un server PostgreSQL on-premise utilizzando pg_dump

Per esportare un database non gestito da Cloud SQL, per importarlo in un secondo momento in Cloud SQL, utilizza l'utilità pg_dump con quanto segue :

  • --no-owner

    I comandi di modifica della proprietà non devono essere inclusi nel file di dump.

  • --format

    I formati custom e directory sono consentiti se del file di dump è destinato all'utilizzo con pg_restore.

    Per il formato plain-text, esporta in un SQL dump file . Questo formato non è compatibile con pg_restore. devono essere importati utilizzando il comando di importazione della console Google Cloud psql.

  • --no-acl

    Questo flag è obbligatorio se il dump conterrà istruzioni per concedere o revocare l'appartenenza a un ruolo SUPERUSER.

  • --clean

    Questo flag facoltativo consente di includere l'istruzione SQL DROP <object> necessaria per rimuovere (pulire) gli oggetti di database prima di importarli.

  • --if-exists

    Questo flag facoltativo consente di includere l'istruzione SQL IF EXISTS in ogni istruzione DROP prodotta dal flag clean.

Inoltre, devi rimuovere tutti i seguenti elementi:

  • Dichiarazioni relative alle estensioni, se Cloud SQL non supporta l'estensione. Vedi le estensioni di PostgreSQL per consultare l'elenco delle estensioni supportate.
  • Estratti conto CREATE EXTENSION o DROP EXTENSION facendo riferimento a plpgsql. Questa estensione è preinstallata su Cloud SQL Istanze Postgres.
  • COMMENT ON EXTENSION estratti conto.

Conferma che la codifica predefinita, come stabilito dalle impostazioni del database, sia corretta per i tuoi dati. Se necessario, puoi eseguire l'override di quello predefinito --encoding flag.

Esporta i dati utilizzando il formato custom da Cloud SQL per PostgreSQL

Per utilizzare il formato personalizzato, esegui pg_dump da una riga di comando:

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

Esporta i dati da più file in parallelo da Cloud SQL per PostgreSQL

Puoi utilizzare il formato di output directory solo per esportare i dati da più file in parallelo.

Per eseguire l'esportazione in parallelo, utilizza il flag -j NUM_CORES. NUM_CORES è il numero di core sull'istanza di origine.

Esporta tutti i database

pg_dumpall è che ti consente di estrarre tutti i database PostgreSQL di un cluster in un singolo file di script. Questo file contiene comandi SQL che puoi usare per ripristinare o Microsoft SQL Server.

Per esportare tutti i database PostgreSQL in un'istanza Cloud SQL, utilizza l'utilità pg_dumpall con i seguenti flag obbligatori:

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

L'utilità pg_dumpall non ha accesso a cloudsqladmin o template database.

Per esportare tutti i database PostgreSQL, esegui questo comando:

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

Per visualizzare le password dei ruoli durante il dump dei ruoli con pg_dumpall, imposta il cloudsql.pg_authid_select_role a un nome ruolo PostgreSQL. Se il ruolo esistente ha accesso in sola lettura (SELECT) alla tabella pg_authid. Questa tabella contiene password dei ruoli.

Importa

Utilizza l'utilità pg_restore per importare un archivio in un un database Cloud SQL. pg_restore funziona solo con gli archivi creati da pg_dump nei formati custom o directory. Scopri di più su pg_restore.

Importa da un file di dump creato con il formato custom in Cloud SQL per PostgreSQL

Se il file di dump è stato creato in un formato personalizzato, esegui questo comando:

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

La post-elaborazione da sed commenta tutte le istruzioni di estensione nel file di dump SQL.

Quando esegui l'importazione con pg_restore, specifica il sommario elaborato con l'argomento della riga di comando "--use-list=DATABASE_NAME.toc".

Importa dati da più file in parallelo a Cloud SQL per PostgreSQL

Puoi importare i dati da più file in parallelo solo per gli archivi creati utilizzando i formati di output directory e custom.

Per eseguire l'importazione in parallelo, utilizza il flag -j NUM_CORES. NUM_CORES è il numero di core dell'istanza di destinazione.

Importa le prestazioni su Cloud SQL per PostgreSQL

Le prestazioni di

Passaggi successivi