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
edirectory
sono consentiti se il file di dump deve essere utilizzato conpg_restore
.Per il formato
plain-text
, esportali in un formatoSQL dump file
. Questo formato non è compatibile conpg_restore
e deve essere importato utilizzando il comando di importazione della console Google Cloud o il clientpsql
.--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
oDROP 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
- Scopri come controllare lo stato delle operazioni di importazione ed esportazione.
- Scopri di più sulle best practice per l'importazione e l'esportazione dei dati.
- Scopri di più sull'utilità pg_dump di PostgreSQL.
- Problemi noti relativi a importazioni ed esportazioni.