Esporta e importa utilizzando pg_dump, pg_dumpall e pg_restore

Questa pagina descrive 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 l'istanza non sia sottodimensionata.

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

Dopo aver completato un'operazione di importazione, verifica 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 utilizzare Cloud SQL per eseguire un'esportazione dalla console Google Cloud, dalla CLI gcloud 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 verificare che il file di esportazione risultante sia valido per l'importazione 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 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 ti consente di includere l'istruzione SQL IF EXISTS con ogni istruzione DROP prodotta dal flag clean.

Inoltre, devi rimuovere tutti i seguenti elementi:

  • Dichiarazioni relative all'estensione, se Cloud SQL non supporta l'estensione. Vedi le estensioni di PostgreSQL per consultare l'elenco delle estensioni supportate.
  • Dichiarazioni CREATE EXTENSION o DROP EXTENSION che fanno 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 ignorare il valore predefinito con il flag --encoding.

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

Per esportare tutti i database PostgreSQL, esegui il seguente 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 flag su un nome del ruolo PostgreSQL. Se il ruolo esistente ha accesso di 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 database Cloud SQL. pg_restore funziona solo con gli archivi creato da pg_dump nel custom o directory. Scopri di più su pg_restore.

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

Se il file dump è stato creato con formato personalizzato, esegui il seguente comando:

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

Il post-processing da sed commenta tutte le istruzioni di estensione nel file di dump SQL.

Durante l'importazione utilizzando pg_restore, specifica l'indice 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

Passaggi successivi