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 sottoprovvisionata.
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ù sulle pg_dump, pg_dumpall e pg_restore
utilità.
Esportare i dati da Cloud SQL per PostgreSQL
Puoi utilizzare Cloud SQL per eseguire un'esportazione dalla Google Cloud console, 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 due utilità, assicurati di utilizzare anche le opzioni richieste per garantire 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, per importarlo in un secondo momento
in Cloud SQL, utilizza l'utilità pg_dump con i seguenti
flag:
--no-ownerI comandi di modifica della proprietà non devono essere inclusi nel file di dump.
--formatI formati
customedirectorysono consentiti se il file di dump è destinato all'utilizzo conpg_restore.Per il formato
plain-text, esporta invece in unSQL dump file. Questo formato non è compatibile conpg_restoree deve essere importato utilizzando il Google Cloud comando di importazione della console opsqlclient.--no-aclQuesto flag è obbligatorio se il dump contiene istruzioni per concedere o revocare l'appartenenza a un ruolo
SUPERUSER.--cleanQuesto flag facoltativo ti consente di includere l'istruzione SQL
DROP <object>necessaria per eliminare (pulire) gli oggetti del database prima di importarli.--if-existsQuesto flag facoltativo ti consente di includere l'istruzione SQL
IF EXISTScon ogni istruzioneDROPgenerata dal flagclean.
Inoltre, devi rimuovere tutti i seguenti elementi:
- Istruzioni relative alle estensioni, se Cloud SQL non supporta l'estensione. Per l'elenco delle estensioni supportate, consulta Estensioni PostgreSQL.
- Istruzioni
CREATE EXTENSIONoDROP EXTENSIONche fanno riferimento a plpgsql. Questa estensione è preinstallata sulle istanze Cloud SQL Postgres. - Istruzioni
COMMENT ON EXTENSION.
Verifica che la codifica predefinita, come determinata dalle impostazioni del database,
sia corretta per i tuoi dati. Se necessario, puoi sostituire il valore predefinito con il
--encoding flag.
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 esportare in parallelo, utilizza il flag -j NUM_CORES.
NUM_CORES è il numero di core dell'istanza di origine.
Esportare 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=cloudsqladminexclude-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
flag cloudsql.pg_authid_select_role su un nome di ruolo PostgreSQL. Se il ruolo esiste,
ha accesso in 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.
Importare da un file di dump creato con il formato custom in Cloud SQL per PostgreSQL
Se il file di dump è stato creato con il formato personalizzato, esegui il seguente 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 importi utilizzando pg_restore, specifica il sommario elaborato con l'argomento della riga di comando "--use-list=DATABASE_NAME.toc".
Importare i 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 importare 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
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 per le importazioni e le esportazioni.