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
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:
|
| 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
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
- Importare dati utilizzando i file di dump.
- Esportare i dati utilizzando i file di dump.
- Importa i dati utilizzando i file CSV.
- Esporta i dati utilizzando i file CSV.
- Importa i dati utilizzando i file SQL.
- Esportare i dati utilizzando i file SQL.
- Abilita i backup automatici.
- Ripristina da un backup.