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

Quando importi ed esporti dati in AlloyDB per PostgreSQL, tieni presente le seguenti best practice:

  • Non utilizzare i bucket Requester Pays di Cloud Storage per importazioni o esportazioni.
  • Utilizza i flag corretti quando crei un file di dump SQL.
  • Comprimi i dati per ridurre i costi.
  • Riduci i processi di importazione ed esportazione di lunga durata elaborando i dati in batch.
  • Verifica il database importato dopo l'importazione.

Non utilizzare bucket Cloud Storage Requester Pays

Non puoi utilizzare un bucket Cloud Storage con l'opzione Richiedente paga abilitata per le importazioni o le esportazioni da AlloyDB. AlloyDB utilizza un account di servizio gestito da Google, Service Agent, per eseguire importazioni ed esportazioni. In genere, questo agente non dispone del contesto o della configurazione per addebitare al progetto del richiedente l'accesso ai dati, il che causa l'esito negativo delle operazioni che coinvolgono i bucket Requester Pays.

Utilizza i flag corretti quando crei un file di dump SQL

Se non utilizzi i flag e le opzioni corretti quando esporti i dati in un file di dump SQL, l'importazione potrebbe non riuscire. Per informazioni sull'esportazione dei dati da importare in AlloyDB, consulta Esportare un file DMP ed Esportare un file SQL.

Comprimi i dati per ridurre i costi

AlloyDB supporta l'importazione e l'esportazione di file .gz compressi da Cloud Storage. La compressione può farti risparmiare spazio di archiviazione significativo su Cloud Storage e ridurre i costi di archiviazione, soprattutto quando esporti grandi quantità di dati. Quando esporti un dump SQL o un file CSV utilizzando l'API AlloyDB, utilizza un'estensione file .gz nell'URI di destinazione per comprimere i dati. Quando importi un file con estensione .gz, il file viene decompresso automaticamente.

Ridurre i processi di importazione ed esportazione di lunga durata

A seconda delle dimensioni dei dati, le importazioni e le esportazioni da AlloyDB possono richiedere molto tempo. Se un'operazione richiede troppo tempo, potrebbe bloccare altre operazioni.

Ridurre il tempo necessario per completare ogni operazione utilizzando batch di dati più piccoli. Puoi anche utilizzare lo strumento pg_dump per eseguire un'esportazione manuale da un client connesso a un'istanza del pool di lettura.

Verifica il database importato

Una volta completata un'operazione di importazione, connettiti al database utilizzando psql o un altro client ed esegui i comandi appropriati per assicurarti che i contenuti siano corretti, ad esempio elencando le tabelle o eseguendo query sui conteggi delle righe.

Automatizzare le operazioni di esportazione

Sebbene AlloyDB non fornisca un metodo integrato per automatizzare le esportazioni, puoi creare uno strumento di automazione utilizzando altri componentiGoogle Cloud come Cloud Scheduler, Pub/Sub e Cloud Run Functions.

Risoluzione dei problemi

Questa sezione fornisce correzioni suggerite per i problemi che potresti riscontrare con le operazioni di importazione ed esportazione.

Operazioni di importazione

Problema Descrizione Correzione consigliata
ERROR: permission denied for schema public Per PostgreSQL 15 e versioni successive, l'importazione dei dati potrebbe non riuscire a causa delle autorizzazioni dello schema se crei il database di destinazione da template0.

Per risolvere il problema, utilizza il seguente comando per concedere i privilegi sullo schema public all'utente che importa i dati:

        GRANT ALL ON SCHEMA public TO my_import_user;
        
L'operazione di importazione sta richiedendo troppo tempo. Un numero eccessivo di connessioni attive può interferire con le operazioni di importazione.

Prova a procedere come segue:

  • Chiudi le connessioni non utilizzate.
  • Per assicurarti che siano disponibili risorse sufficienti, controlla l'utilizzo di CPU e memoria della tua istanza.
  • Per garantire le risorse massime per l'importazione, riavvia l'istanza prima di iniziare l'operazione. In questo modo vengono chiuse tutte le connessioni e terminano le attività che potrebbero consumare risorse.
Un'operazione di importazione non va a buon fine perché 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 hanno ricevuto autorizzazioni per gli oggetti nel database di cui è stato eseguito il dump devono esistere nel database di destinazione. Se non esistono, l'operazione di importazione non riesce a ricreare gli oggetti con la proprietà o le autorizzazioni originali. Crea gli utenti del database richiesti prima dell'importazione.
GRANT stderr: ERROR: must be member of role ROLE_NAME Questo errore può verificarsi se importi un file di dump SQL che contiene oggetti di proprietà di ROLE_NAME o autorizzazioni concesse a ROLE_NAME, ma l'utente del database che esegue l'importazione non è membro di ROLE_NAME. Per risolvere il problema, assicurati che il ruolo ROLE_NAME esista nel database di destinazione e concedi l'appartenenza a ROLE_NAME all'utente che esegue l'importazione prima di eseguire l'importazione.

Operazioni di esportazione

Problema Descrizione Correzione consigliata
HTTP Error 403: The service account does not have the required permissions for the bucket. Il account di servizio AlloyDB non dispone delle autorizzazioni necessarie per il bucket di destinazione. Assicurati che il bucket Cloud Storage di destinazione esista e che all'account di servizio AlloyDB siano concessi i ruoli roles/storage.objectAdmin o roles/storage.objectCreator. Questi ruoli consentono di scrivere nel bucket. Consulta Ruoli Identity and Access Management (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 lo schema e i dati del database e in genere richiede più tempo. Il formato CSV esporta solo i dati risultanti da una query SELECT che fornisci. Se un'esportazione SQL non va a buon fine o è troppo lenta, valuta la possibilità di esportare singole tabelle utilizzando CSV.
L'esportazione sta richiedendo troppo tempo. Se un'esportazione richiede troppo tempo nell'istanza principale, è possibile che sia troppo grande. Valuta la possibilità di esportare i dati in batch più piccoli. Ad esempio, esporta le tabelle singolarmente anziché esportare un intero database in un'unica operazione. Puoi anche utilizzare lo strumento pg_dump per eseguire un'esportazione manuale da un client connesso a un'istanza del pool di lettura.
Errore Create Extension nel log pg_restore o l'importazione non riesce. Il file di dump contiene riferimenti a un'estensione PostgreSQL che AlloyDB non supporta o che non è installata sul tuo cluster. Per rimuovere i riferimenti, modifica il file di dump o installa l'estensione sul cluster se AlloyDB la supporta.
Errore durante l'utilizzo di pg_dumpall. L'utilità pg_dumpall con flag come --globals-only potrebbe richiedere privilegi non disponibili in AlloyDB.

Per esportare oggetti globali come utenti e ruoli senza password, utilizza il seguente comando per includere il flag --no-role-passwords:

        pg_dumpall --globals-only --no-role-passwords
        
L'operazione di esportazione va in timeout o viene visualizzato Connection reset by peer. Se Cloud Storage non riceve dati entro un determinato periodo di tempo, la connessione può essere reimpostata. Ciò può verificarsi se le query iniziali del database necessarie per l'esportazione richiedono troppo tempo per essere eseguite. In questo caso, prova a eseguire un'esportazione manuale utilizzando lo strumento pg_dump da un client connesso a un'istanza del pool di lettura.

Problemi comuni

Problema Descrizione Correzione consigliata
HTTP Error 409: Operation failed because another operation was already in progress. Il sistema consente una sola operazione di importazione o esportazione basata su API alla volta. Prova a eseguire la richiesta dopo il completamento dell'operazione attuale.

Passaggi successivi