Best practice per l'importazione e l'esportazione dei dati

Questa pagina fornisce le best practice per l'importazione e l'esportazione dei dati con Cloud SQL. Per istruzioni dettagliate sull'importazione dei dati in Cloud SQL, consulta Importazione dei dati. Per istruzioni dettagliate sull'esportazione dei dati, sia che si trovino in Cloud SQL o in un'istanza che gestisci, consulta Esportazione dei dati.

Best practice per l'importazione e l'esportazione

Di seguito sono riportate le best practice da considerare per l'importazione e l'esportazione dei dati:

Non utilizzare i bucket per i pagamenti a carico del richiedente di Cloud Storage

Non puoi utilizzare un bucket Cloud Storage in cui la funzionalità Pagamenti a carico del richiedente è abilitata per le importazioni e le esportazioni da Cloud SQL.

Ridurre al minimo l'impatto delle esportazioni sulle prestazioni

Per un'esportazione standard da Cloud SQL, l'esportazione viene eseguita mentre il database è online. Quando i dati esportati sono di dimensioni inferiori, è probabile che l'impatto sia minimo. Tuttavia, in presenza di database o oggetti di grandi dimensioni, come i BLOB nel database, c'è la possibilità che l'esportazione possa ridurre le prestazioni del database. Ciò potrebbe influire sul tempo necessario per eseguire query e operazioni sul database. Dopo aver avviato un'esportazione, non è possibile interromperla se il database inizia a rispondere lentamente.

Per impedire risposte lente durante un'esportazione, puoi:

  1. Recupera l'esportazione da una replica di lettura. Potrebbe essere una buona opzione se esegui le esportazioni spesso (giornaliere o più spesso), ma la quantità di dati esportati è ridotta. Per eseguire un'esportazione da una replica di lettura, utilizza le funzioni di esportazione della Google Cloud Console, gcloud o dell'API REST sull'istanza della replica di lettura. Consulta Creare repliche di lettura per ulteriori informazioni su come creare e gestire le repliche di lettura.

  2. Utilizza l'esportazione serverless. Con l'esportazione serverless, Cloud SQL crea un'istanza temporanea separata per trasferire l'operazione di esportazione. La riduzione del carico dell'operazione di esportazione consente ai database sull'istanza principale di continuare a gestire le query ed eseguire operazioni alla consueta percentuale di prestazioni. Al termine dell'esportazione dei dati, l'istanza temporanea viene eliminata automaticamente. Questa potrebbe essere una buona opzione se stai eseguendo un'esportazione una tantum di un database di grandi dimensioni. Utilizza le funzioni di esportazione della Google Cloud Console, gcloud o REST dell'API, con il flag offload, per eseguire un'operazione di esportazione serverless.

    Durante un'operazione di esportazione serverless puoi eseguire altre operazioni, come modifica, importazione e failover dell'istanza. Tuttavia, se selezioni delete, l'operazione di esportazione si interrompe un po' di tempo dopo l'eliminazione dell'istanza e non viene esportato alcun dato.

    Consulta la seguente tabella per scoprire di più sulle operazioni che possono essere bloccate mentre è in esecuzione un'operazione di esportazione serverless:
    Operazione attuale Nuova operazione Bloccato?
    Qualsiasi operazione Esportazione serverless
    Esportazione serverless Qualsiasi operazione tranne l'esportazione serverless No
    Qualsiasi operazione tranne l'esportazione serverless Qualsiasi operazione tranne l'esportazione serverless

    L'esecuzione di un'esportazione serverless richiede più tempo rispetto a un'esportazione standard, perché la creazione dell'istanza temporanea richiede tempo. Questa operazione richiede come minimo più di cinque minuti, ma potrebbe essere più lunga per i database più grandi. Valuta l'impatto su tempo, prestazioni e costi prima di determinare quale tipo di esportazione utilizzare.

Utilizza i flag corretti quando crei un file di dump SQL

Se non utilizzi la procedura corretta quando esporti i dati in un file di dump SQL, l'importazione potrebbe non riuscire. Per informazioni sulla creazione di un file di dump SQL per l'importazione in Cloud SQL, consulta Esportazione dei dati.

Comprimi i dati per ridurre i costi

Cloud SQL supporta l'importazione e l'esportazione di file compressi e non compressi. La compressione può consentire di risparmiare spazio di archiviazione significativo in Cloud Storage e ridurre i costi di archiviazione, soprattutto durante l'esportazione di istanze di grandi dimensioni.

Quando esporti un file CSV o un dump SQL, utilizza un'estensione del file .gz per comprimere i dati. Quando importi un file con estensione di .gz, il file viene decompresso automaticamente.

Riduci i processi di importazione ed esportazione a lunga esecuzione

Il completamento delle importazioni in Cloud SQL e delle esportazioni da Cloud SQL può richiedere molto tempo, a seconda delle dimensioni dei dati elaborati. Ciò può avere i seguenti effetti:

  • Non puoi arrestare un'operazione di un'istanza Cloud SQL a lunga esecuzione.
  • Puoi eseguire una sola operazione di importazione o esportazione alla volta per ogni istanza e un'importazione o un'esportazione a lunga esecuzione blocca altre operazioni, ad esempio i backup automatici giornalieri. Le esportazioni serverless ti consentono di eseguire altre operazioni, tra cui la modifica di istanze, l'importazione, il failover e lo sblocco dei backup automatici giornalieri.

Puoi ridurre il tempo necessario per completare ogni operazione utilizzando la funzionalità di importazione o esportazione di Cloud SQL con batch di dati più piccoli.

Per le esportazioni puoi eseguire l'esportazione da una replica di lettura o utilizzare l'esportazione serverless per ridurre al minimo l'impatto sulle prestazioni del database e consentire l'esecuzione di altre operazioni sull'istanza mentre è in esecuzione un'esportazione.

Per altri suggerimenti, consulta Diagnostica dei problemi relativi alle istanze Cloud SQL.

Verifica il database importato

Dopo il completamento di un'operazione di importazione, connettiti al tuo database ed esegui i comandi del database appropriati per assicurarti che i contenuti siano corretti. Ad esempio, connetti ed elenca database, tabelle e voci specifiche.

Limitazioni note

Per un elenco delle limitazioni note, consulta Problemi con l'importazione e l'esportazione dei dati.

Automazione delle operazioni di esportazione

Sebbene Cloud SQL non fornisca un modo integrato per automatizzare le esportazioni dei database, puoi creare il tuo strumento di automazione utilizzando diversi componenti Google Cloud. Per scoprire di più, consulta questo tutorial.

Risoluzione dei problemi

Risoluzione dei problemi relativi alle operazioni di importazione

Problema Risoluzione dei problemi
Messaggio di errore: permission denied for schema public Per PostgreSQL 15 e versioni successive, se il database di destinazione viene creato da template0, l'importazione dei dati potrebbe non riuscire. Per risolvere il problema, fornisci i privilegi di schema pubblico all'utente cloudsqlsuperuser eseguendo il comando SQL GRANT ALL ON SCHEMA public TO cloudsqlsuperuser.
HTTP Error 409: Operation failed because another operation was already in progress. Esiste già un'operazione in attesa per la tua istanza. È consentita una sola operazione alla volta. Prova a eseguire la richiesta dopo il completamento dell'operazione attuale.
L'operazione di importazione sta richiedendo troppo tempo. Troppe connessioni attive possono interferire con le operazioni di importazione.

Chiudi le operazioni inutilizzate. Controlla l'utilizzo di CPU e memoria della tua istanza Cloud SQL per assicurarti che siano disponibili molte risorse. Il modo migliore per garantire il numero massimo di risorse per l'importazione è riavviare l'istanza prima di iniziare l'operazione.

Un riavvio:

  • Chiude tutte le connessioni.
  • Termina tutte le attività che potrebbero consumare risorse.
Un'operazione di importazione può non riuscire quando uno o più utenti a cui viene fatto riferimento nel file di dump non esistono. Prima di importare un file di dump, tutti gli utenti del database che sono proprietari di oggetti o a cui sono state concesse autorizzazioni per gli oggetti nel database di cui è stato eseguito il dump devono esistere nel database di destinazione. In caso contrario, l'operazione di importazione non riesce a ricreare gli oggetti con la proprietà o le autorizzazioni originali.

Crea gli utenti del database prima dell'importazione.

Dopo l'importazione dei dati, la dimensione di utilizzo del disco dati è molto più elevata.

Dopo l'importazione dei dati, potrebbe verificarsi un utilizzo imprevisto del disco. Questo utilizzo potrebbe essere dovuto all'utilizzo del recupero point-in-time.

Per risolvere il problema, dopo aver importato i dati, disabilita il recupero point-in-time se vuoi eliminare i log e recuperare lo spazio di archiviazione. Tieni presente che la riduzione dello spazio di archiviazione utilizzato non riduce le dimensioni dello spazio di archiviazione di cui è stato eseguito il provisioning per l'istanza.

Messaggio di errore: GRANT stderr: ERROR: must be member of role ROLE_NAME

Questo messaggio di errore viene visualizzato se tenti di importare un file di dump SQL caricato in Cloud Storage in un database Cloud SQL e il job di importazione è in esecuzione da circa quattro giorni.

ROLE_NAME è un ruolo database personalizzato definito nel database PostgreSQL di origine. L'utente cloudsqlsuperuser predefinito importa il file di dump SQL. Tuttavia, questo utente potrebbe non appartenere al ruolo ROLE_NAME.

Per risolvere il problema, completa la procedura seguente:

  1. Crea il ruolo ROLE_NAME nel database di destinazione in cui stai importando il file di dump SQL.
  2. Non utilizzare l'utente cloudsqlsuperuser per importare il file. Nel database di destinazione, invece, specifica un utente che è membro del ruolo ROLE_NAME. Per specificare l'utente, esegui questo comando:

    gcloud sql import sql INSTANCE URI [--async]
    [--database=DATABASE, -d DATABASE] [--user=USER] [GCLOUD_WIDE_FLAG …]

Risoluzione dei problemi relativi alle operazioni di esportazione

Problema Risoluzione dei problemi
HTTP Error 409: Operation failed because another operation was already in progress. Esiste già un'operazione in attesa per la tua istanza. È consentita una sola operazione alla volta. Prova a eseguire la richiesta dopo il completamento dell'operazione attuale.
HTTP Error 403: The service account does not have the required permissions for the bucket. Assicurati che il bucket esista e che l'account di servizio per l'istanza Cloud SQL (che esegue l'esportazione) abbia il ruolo Storage Object Creator (roles/storage.objectCreator) per consentire l'esportazione nel bucket. Consulta la pagina relativa ai ruoli IAM per Cloud Storage.
L'esportazione CSV è riuscita, ma l'esportazione SQL non è riuscita. I formati CSV e SQL vengono esportati in modo diverso. Il formato SQL esporta l'intero database e il processo potrebbe richiedere più tempo. Il formato CSV consente di definire quali elementi del database includere nell'esportazione.

Utilizza le esportazioni in formato CSV per esportare solo ciò di cui hai bisogno.

L'esportazione sta richiedendo troppo tempo. Cloud SQL non supporta operazioni sincrone simultanee.

Utilizza la riduzione del carico delle esportazioni. A livello generale, durante l'offload delle esportazioni, invece di eseguire un'esportazione sull'istanza di origine, Cloud SQL avvia un'istanza di offload per eseguire l'esportazione. L'offload dell'esportazione presenta diversi vantaggi, tra cui un aumento delle prestazioni sull'istanza di origine e lo sblocco delle operazioni amministrative mentre l'esportazione è in esecuzione. Con l'offload delle esportazioni, la latenza totale può aumentare del tempo necessario per attivare l'istanza di offload. In genere, per le esportazioni di dimensioni ragionevoli, la latenza non è significativa. Tuttavia, se l'esportazione è sufficientemente ridotta, potresti notare un aumento della latenza.

Errore di creazione estensione. Il file di dump contiene riferimenti a un'estensione non supportata.

Modifica il file di dump per rimuovere i riferimenti.

Errore durante l'utilizzo di pg_dumpall. L'utilizzo dell'utilità pg_dumpall con il flag --global richiede il ruolo super user, ma questo ruolo non è supportato in Cloud SQL per PostgreSQL. Per evitare che si verifichino errori durante l'esecuzione di operazioni di esportazione che includono nomi utente, utilizza anche il flag --no-role-passwords.
L'operazione di esportazione scade prima di esportare qualsiasi elemento e viene visualizzato il messaggio di errore Could not receive data from client: Connection reset by peer. Se Cloud Storage non riceve dati entro un determinato periodo di tempo, in genere circa sette minuti, la connessione viene reimpostata. È possibile che l'esecuzione della query di esportazione iniziale richieda troppo tempo.

Esegui un'esportazione manuale utilizzando lo strumento pg_dump.

Vuoi che le esportazioni siano automatizzate. Cloud SQL non offre un modo per automatizzare le esportazioni.

Puoi creare il tuo sistema di esportazione automatizzato utilizzando prodotti Google Cloud come Cloud Scheduler, Pub/Sub e Cloud Functions, come in questo articolo sull' automazione dei backup.

Passaggi successivi