Esportazione e importazione mediante pg_dump, pg_dumpall e pg_restore

In questa pagina viene descritta 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 le risorse del database, ma non interferiscono con le normali operazioni del database, a meno che l'istanza non sia sottoprovisionata.

Per le best practice, consulta Best practice per l'importazione e l'esportazione dei dati.

Dopo aver completato un'operazione di importazione, verifica i risultati.

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

Esporta i dati da Cloud SQL per PostgreSQL

Puoi utilizzare Cloud SQL per eseguire un'esportazione dalla console Google Cloud , da gcloud CLI o dall'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 assicurarti che il file di esportazione risultante sia valido per l'importazione in Cloud SQL.

Esportare dati da un server PostgreSQL on-premise utilizzando pg_dump

Per esportare un database non gestito da Cloud SQL per l'importazione successiva in Cloud SQL, utilizza l'utilità pg_dump con i seguenti flag:

  • --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 il file di dump è destinato all'uso con pg_restore.

    Per il formato plain-text, esporta in un SQL dump file invece. Questo formato non è compatibile con pg_restore e deve essere importato utilizzando il comando di importazione della console Google Cloud o il client psql.

  • --no-acl

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

  • --clean

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

  • --if-exists

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

Inoltre, devi rimuovere tutti i seguenti elementi:

  • Istruzioni relative alle estensioni, se Cloud SQL non supporta l'estensione. Consulta la sezione Estensioni PostgreSQL per l'elenco delle estensioni supportate.
  • CREATE EXTENSION o DROP EXTENSION che fanno riferimento a plpgsql. Questa estensione è preinstallata sulle istanze Cloud SQL Postgres.
  • COMMENT ON EXTENSION istruzioni.

Verifica che la codifica predefinita, determinata dalle impostazioni del database, sia corretta per i tuoi dati. Se necessario, puoi ignorare il valore predefinito con il flag --encoding.

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

Esportare 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 nell'istanza di origine.

Esporta tutti i database

pg_dumpall è un'utilità che ti consente di estrarre tutti i database PostgreSQL di un cluster in un unico file di script. Questo file contiene comandi SQL che puoi utilizzare per ripristinare i database.

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 ai database cloudsqladmin o template.

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 flag cloudsql.pg_authid_select_role su un nome di ruolo PostgreSQL. Se il ruolo esiste, allora ha accesso di sola lettura (SELECT) alla tabella pg_authid. Questa tabella contiene le password dei ruoli.

Importa

Utilizza l'utilità pg_restore per importare un archivio in 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 con un formato personalizzato, esegui questo comando:

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

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

Quando importi utilizzando pg_restore, specifica l'indice elaborato con l'argomento della riga di comando "--use-list=DATABASE_NAME.toc".

Importare dati da più file in parallelo in Cloud SQL per PostgreSQL

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

Per importare in parallelo, utilizza il flag -j NUM_CORES. NUM_CORES è il numero di core nell'istanza di destinazione.

Rendimento dell'importazione su Cloud SQL per PostgreSQL

Le prestazioni di

Passaggi successivi