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 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, 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 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:

  • Istruzioni relative alle estensioni, se Cloud SQL non supporta . Vedi Estensioni 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 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 è 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 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 esiste, quindi può accedere 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 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.

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 dati da più file in parallelo solo per gli archivi creati utilizzando i directory e custom formati di output.

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

Importa le prestazioni su Cloud SQL per PostgreSQL

Passaggi successivi