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 il provisioning dell'istanza non sia insufficiente.
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 i 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 esegui 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 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.
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.