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 in Cloud SQL. Per istruzioni passo passo sull'importazione di dati in Cloud SQL, consulta Importazione dei dati. Per istruzioni passo passo per esportare i dati, che si trova in Cloud SQL o in un'istanza che gestisci, consulta Esportazione Dati.

Best practice per l'importazione e l'esportazione

Di seguito sono riportate le best practice da tenere presenti durante l'importazione e per esportare i dati:

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

Non puoi utilizzare un bucket Cloud Storage con L'opzione Pagamenti a carico del richiedente è stata attivata per importazioni ed esportazioni da Cloud SQL.

Riduci al minimo l'impatto sulle prestazioni delle esportazioni

Per un'esportazione standard da Cloud SQL, l'esportazione viene eseguita mentre il database è online. Quando i dati esportati sono minori, è probabile che l'impatto minimo. Tuttavia, in presenza di database di grandi dimensioni o oggetti di grandi dimensioni, come i BLOB nella esiste la possibilità che l'esportazione riduca il database delle prestazioni. Ciò potrebbe influire sul tempo necessario per eseguire query sul database e operazioni sul database. Dopo aver avviato un'esportazione, possibile arrestarlo se il database inizia a rispondere lentamente.

Per evitare risposte lente durante un'esportazione, puoi:

  1. Acquisisci l'esportazione da una replica di lettura. Potrebbe essere una buona opzione effettua le esportazioni di frequente (ogni giorno o più spesso), ma la quantità di dati esportate è di dimensioni ridotte. Per eseguire un'esportazione da una replica di lettura, utilizza Funzioni di esportazione Google Cloud Console, gcloud o dell'API REST nella replica di lettura in esecuzione in un'istanza Compute Engine. Vedi Crea repliche di lettura per saperne di più su come creare e gestire di repliche di lettura.

  2. Usa l'esportazione serverless. Con l'esportazione serverless, Cloud SQL crea un'istanza temporanea separata per non sovraccaricare l'operazione di esportazione. Trasferimento l'operazione di esportazione consente ai database sull'istanza principale di continuare per eseguire query ed eseguire operazioni con il tasso di prestazioni abituale. Quando L'esportazione dei dati è stata completata, l'istanza temporanea viene eliminata automaticamente. Potrebbe essere una buona opzione se esegui un'esportazione una tantum di un per configurare un database. Usa la Google Cloud Console, gcloud o REST API funzioni di esportazione, con il flag offload, per eseguire una di esportazione serverless.

    Durante un'operazione di esportazione serverless puoi eseguire altre operazioni, modifica, importazione e failover dell'istanza. Tuttavia, se selezioni delete, l'operazione di esportazione si interrompe qualche tempo dopo che hai eliminato l'istanza non esporta alcun dato.

    Consulta la tabella seguente 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

    Un'esportazione serverless richiede più tempo rispetto a un'esportazione standard, per creare l'istanza temporanea. Come minimo, richiede più di cinque minuti, ma per database più grandi potrebbe essere necessario più tempo. Considera l'impatto su in termini di 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 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 sia compresse che non compressi. La compressione può far risparmiare molto spazio di archiviazione Cloud Storage e di ridurre i costi di archiviazione, soprattutto e l'esportazione di istanze di grandi dimensioni.

Quando esporti un dump SQL o un file CSV, utilizza un .gz estensione del file per comprimere i dati. Quando importi un file con un oggetto di .gz, viene decompressa 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 da elaborare. Ciò può avere le seguenti conseguenze:

  • 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'operazione L'importazione o l'esportazione blocca altre operazioni, come i backup automatici giornalieri. Serverless consente di eseguire altre operazioni, tra cui la modifica delle istanze, l'importazione, sbloccando i backup automatici giornalieri.

Puoi ridurre il tempo necessario per completare ogni operazione utilizzando il metodo 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 esportazione serverless in minimizzare l'impatto sulle prestazioni del database e consentire l'esecuzione di altre operazioni sull'istanza durante l'esecuzione di un'esportazione.

Per altri suggerimenti, vedi Diagnosi in corso Problemi con le istanze Cloud SQL.

Verifica il database importato

Al termine di un'operazione di importazione, connettiti al database ed esegui i comandi di database appropriati per verificare che i contenuti siano corretti. Per ad esempio connect e per elencare database, tabelle e voci specifiche.

Limitazioni note

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

Automatizzare le operazioni di esportazione

Sebbene Cloud SQL non fornisca un modo integrato per automatizzare i database , puoi creare il tuo strumento di automazione utilizzando diverse Google Cloud componenti. Per saperne di più, vedi 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 privilegi pubblici per lo schema 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 l'istanza. Solo un'operazione è consentito alla volta. Prova la richiesta dopo che l'operazione attuale è completato.
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 del tuo di Cloud SQL per verificare che sono disponibili numerose risorse. Il modo migliore per garantire il massimo delle risorse per l'importazione è riavviare l'istanza prima di iniziare l'operazione.

Un riavvio:

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

Crea gli utenti del database prima dell'importazione.

Dopo aver importato i dati, la dimensione di utilizzo del disco dati sarà molto maggiore.

Dopo l'importazione dei dati, potrebbe verificarsi un utilizzo imprevisto del disco. Questo utilizzo può 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 spazio di archiviazione. Tieni presente che la diminuzione lo spazio di archiviazione utilizzato non riduce le dimensioni dello spazio di archiviazione 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 che viene caricato in Cloud Storage a un database Cloud SQL e il job di importazione è stato eseguito per circa quattro giorni.

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

Per risolvere il problema, completa i seguenti passaggi:

  1. Crea il ruolo ROLE_NAME nel database di destinazione in cui ti trovi per importare il file di dump SQL.
  2. Non utilizzare l'utente cloudsqlsuperuser per importare il file. Invece, Nel database di destinazione, specifica un utente 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 l'istanza. Solo un'operazione è consentito alla volta. Prova la richiesta dopo che l'operazione attuale è completato.
HTTP Error 403: The service account does not have the required permissions for the bucket. Assicurati che il bucket esista e l'account di servizio per Cloud SQL istanza (che sta eseguendo l'esportazione) ha Ruolo Storage Object Creator (roles/storage.objectCreator) per consentire l'esportazione nel bucket. Consulta Ruoli IAM per Cloud Storage.
L'esportazione in formato CSV è riuscita, ma l'esportazione SQL non è riuscita. I formati CSV e SQL esportano in modo diverso. Il formato SQL esporta l'intero database e probabilmente richiede più tempo. Il formato CSV consente di devi definire quali elementi del database includere nell'esportazione.

Utilizzare le esportazioni CSV ed esportare solo ciò che serve.

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

Utilizza esportazione offloading. A livello generale, in fase di offloading delle esportazioni, invece che eseguendo un'esportazione sull'istanza di origine, Cloud SQL avvia per eseguire l'esportazione. La distribuzione dell'esportazione ha diverse vantaggi, tra cui l'aumento delle prestazioni sull'istanza di origine e sblocco di operazioni amministrative durante l'esecuzione dell'esportazione. Con dell'esportazione, la latenza totale può aumentare in base alla quantità di tempo richiesta per visualizzare l'istanza di offload. In genere, per 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 references.

Errore durante l'utilizzo di pg_dumpall. Utilizzo dell'utilità pg_dumpall con il flag --global richiede ruolo super user, questo ruolo non è supportato in Cloud SQL per PostgreSQL. Per evitare errori che si verificano durante l'esecuzione di operazioni di esportazione che includono nomi utente, utilizza anche --no-role-passwords flag.
L'operazione di esportazione scade prima di esportare qualcosa e vedrai il messaggio di errore Could not receive data from client: Connection reset by peer. Se Cloud Storage non riceve dati in un 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 pg_dump.

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

Potresti creare il tuo sistema di esportazione automatizzato utilizzando Google Cloud come Cloud Scheduler, Pub/Sub e Cloud Functions, simile a questo articolo su l'automazione dei backup.

Passaggi successivi