Esporta e importa utilizzando pg_dump, pg_dumpall e pg_restore

In questa pagina viene descritta l'esportazione e l'importazione dei 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 non sia stato eseguito un provisioning insufficiente dell'istanza.

Per le best practice, consulta le 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 utilità, assicurati di utilizzare anche le opzioni richieste per assicurarti che il file di esportazione risultante sia valido per essere importato 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 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 deve essere utilizzato con pg_restore.

    Per il formato plain-text, esportali in un formato SQL dump file. 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 altrimenti istruzioni per concedere o revocare l'appartenenza a un ruolo SUPERUSER.

Inoltre, devi rimuovere tutti i seguenti elementi:

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

Conferma che la codifica predefinita, come determinata dalle impostazioni del database, sia corretta per i tuoi dati. Se necessario, puoi eseguire l'override del 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 dalla riga di comando:

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

Esporta i dati di 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 consente di estrarre tutti i database PostgreSQL di un cluster in un singolo 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 quando esegui il dump dei ruoli con pg_dumpall, imposta il flag cloudsql.pg_authid_select_role su un nome del ruolo PostgreSQL. Se il ruolo esiste, dispone dell'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

Post-elaborazione dai commenti sed a tutte le istruzioni delle estensioni nel file di dump SQL.

Durante l'importazione utilizzando 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 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 nell'istanza di destinazione.

Importa prestazioni su Cloud SQL per PostgreSQL

Passaggi successivi