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 sottodimensionata.
Per le best practice, vedi Best practice per l'importazione e Esportazione dei dati.
Dopo aver completato un'operazione di importazione, verifica il che consentono di analizzare i dati e visualizzare i risultati.
Scopri di più su pg_dump
, pg_dumpall
e pg_restore
utilità.
Esporta i dati da Cloud SQL per PostgreSQL
Puoi utilizzare Cloud SQL per eseguire un'esportazione dalla console Google Cloud, dalla CLI 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.
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 quanto segue
:
--no-owner
I comandi di modifica della proprietà non devono essere inclusi nel file dump.
--format
I formati
custom
edirectory
sono consentiti se del file di dump è destinato all'utilizzo conpg_restore
.Per il formato
plain-text
, esporta in unSQL dump file
. Questo formato non è compatibile conpg_restore
. devono essere importati utilizzando il comando di importazione della console Google Cloudpsql
.--no-acl
Questo flag è obbligatorio se il dump conterrà istruzioni per concedere o revocare l'appartenenza a un ruolo
SUPERUSER
.--clean
Questo flag facoltativo consente di includere l'istruzione SQL
DROP <object>
necessaria per rimuovere (pulire) gli oggetti di 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:
- Dichiarazioni relative all'estensione, se Cloud SQL non supporta l'estensione. Vedi le estensioni di PostgreSQL per consultare l'elenco delle estensioni supportate.
- Dichiarazioni
CREATE EXTENSION
oDROP EXTENSION
che fanno riferimento a plpgsql. Questa estensione è preinstallata su Cloud SQL Istanze Postgres. COMMENT ON EXTENSION
estratti conto.
Conferma che la codifica predefinita, come stabilito dalle impostazioni del database,
sia corretta per i tuoi dati. Se necessario, puoi ignorare 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
Esporta 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
è
che ti consente di estrarre tutti i database PostgreSQL di un cluster in
un singolo file di script. Questo file contiene comandi SQL che puoi usare per ripristinare
o Microsoft SQL Server.
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 del ruolo PostgreSQL. Se il ruolo esistente ha accesso di sola lettura (SELECT
) alla tabella pg_authid
. Questa tabella
contiene 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
creato da pg_dump nel
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 tutte le istruzioni 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".
Importa dati da più file in parallelo a 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.
Importa le 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.