Questa pagina descrive 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 sottodimensionata.
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ù sugli strumenti pg_dump
, pg_dumpall
e pg_restore
.
Esportare i dati da Cloud SQL per PostgreSQL
Puoi utilizzare Cloud SQL per eseguire un'esportazione dalla console Google Cloud, dall'interfaccia a riga di comando 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.
Esportare i dati da un server PostgreSQL on-premise utilizzando pg_dump
Per esportare un database non gestito da Cloud SQL, al fine di importarlo successivamente 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 dump.
--format
I formati
custom
edirectory
sono consentiti se il file dump è destinato all'utilizzo conpg_restore
.Per il formato
plain-text
, esporta in unSQL 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 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 istruzioneDROP
prodotta dal flagclean
.
Inoltre, devi rimuovere tutto quanto segue:
- Dichiarazioni relative alle estensioni, se Cloud SQL non supporta l'estensione. Consulta la sezione Estensioni PostgreSQL per l'elenco delle estensioni supportate.
- Dichiarazioni
CREATE EXTENSION
oDROP EXTENSION
che fanno riferimento a plpgsql. Questa estensione è preinstallata sulle istanze PostgreSQL di Cloud SQL. COMMENT ON EXTENSION
estratti conto.
Verifica che la codifica predefinita, in base alle impostazioni del database, sia corretta per i tuoi dati. Se necessario, puoi sostituire 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
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 dell'istanza di origine.
Esporta tutti i database
pg_dumpall
è
un'utilità che 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 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 di ruolo PostgreSQL. Se il ruolo esistente 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
.
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 tutti gli enunciati 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".
Importare dati da più file in parallelo in 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.
Prestazioni di importazione su Cloud SQL per PostgreSQL
Le prestazioni diPassaggi 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.