In questa pagina viene descritta 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 sottoprovisionata.
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 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 due utilità, assicurati di utilizzare anche le opzioni richieste per assicurarti che il file di esportazione risultante sia valido per l'importazione in Cloud SQL.
Esportare dati da un server PostgreSQL on-premise utilizzando pg_dump
Per esportare un database non gestito da Cloud SQL per l'importazione successiva
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 è destinato all'uso conpg_restore
.Per il formato
plain-text
, esporta in unSQL dump file
invece. 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 tutti i seguenti elementi:
- Istruzioni relative alle estensioni, se Cloud SQL non supporta l'estensione. Consulta la sezione Estensioni PostgreSQL per l'elenco delle estensioni supportate.
CREATE EXTENSION
oDROP EXTENSION
che fanno riferimento a plpgsql. Questa estensione è preinstallata sulle istanze Cloud SQL Postgres.COMMENT ON EXTENSION
istruzioni.
Verifica che la codifica predefinita, determinata dalle impostazioni del database,
sia corretta per i tuoi dati. Se necessario, puoi ignorare il 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
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 nell'istanza di origine.
Esporta tutti i database
pg_dumpall
è
un'utilità che ti 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 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
flag cloudsql.pg_authid_select_role
su un nome di ruolo PostgreSQL. Se il ruolo esiste,
allora 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
.
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
La post-elaborazione dai commenti sed
commenta tutte le istruzioni di estensione
nel file di dump SQL.
Quando importi 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 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 nell'istanza di destinazione.
Rendimento dell'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 per importazioni ed esportazioni.