Come posso risolvere gli errori di ripristino di una tabella da uno snapshot in Amazon Redshift?
Desidero ripristinare una tabella da uno snapshot in Amazon Redshift, ma ricevo un errore.
Breve descrizione
Amazon Redshift ti consente di ripristinare una tabella dagli snapshot disponibili esistenti. Non è necessario che ripristini un intero cluster.
Quando ripristini una singola tabella da uno snapshot, specifica lo snapshot di origine, il database, lo schema e il nome della tabella. Per una tabella ripristinata, specificare il database di destinazione, lo schema e un nuovo nome.
Utilizza la console Amazon Redshift per avviare il ripristino di una tabella da uno snapshot. In alternativa, utilizza l'operazione API RestoreTableFromClusterSnapshot. Per ulteriori informazioni, consulta Ripristino di una tabella da uno snapshot.
Ecco alcuni degli errori più comuni se un ripristino a livello di tabella non riesce:
- Amazon Redshift non è in grado di recuperare i metadati dello snapshot da Amazon Simple Storage Service (Amazon S3) per tabelle con file di metadati superiori al limite di 16 MB. In tal caso, ricevi il seguente messaggio di errore: "Internal Error: Snapshot metadata doesn't exist."
- Se non riesci a trovare lo schema specificato nello snapshot, ciò significa che lo schema non aveva contenuti quando hai creato lo snapshot e non esiste alcun backup. In tal caso, ricevi il messaggio di errore "Target schema 'schema name' doesn't exist in the snapshot. Consider using one of the following: <list of schemas available in the snapshot>“.
- Se non riesci a trovare il database specificato nello snapshot, ciò significa che il database non aveva contenuti quando hai creato lo snapshot e non esiste alcun backup. In tal caso, ricevi il messaggio di errore "Target database '<database name>' doesn't exist in snapshot. Consider using: <list of databases available in snapshot>“.
- Se tenti di eseguire il ripristino di una tabella in un cluster diverso o dopo aver ridimensionato tipi di nodi diversi, ricevi un errore InvalidClusterState.
- Se tenti di eseguire il ripristino di più tabelle concorrenti, ricevi un errore InProgressTableRestoreQuotaExceededFault.
- Se tenti di eseguire il ripristino da uno snapshot di una tabella inesistente, ricevi un errore InvalidTableRestoreArgument.
- Se tenti di eseguire il ripristino da uno snapshot inesistente o errato, ricevi un errore ClusterSnapshotNotFound.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Controlla i dettagli dello snapshot
Esamina i dettagli dello snapshot nella Console di gestione AWS per accertarti che la tabella sia inclusa e che la versione del cluster sia compatibile.
Verifica le autorizzazioni
Esamina le autorizzazioni dell'utente AWS Identity and Access Management (AWS IAM) per assicurarti che la policy consenta il ripristino di tabelle da snapshot. Per verificare le autorizzazioni del ruolo, completa i seguenti passaggi:
- Apri la console IAM.
- Dal pannello di navigazione, scegli Ruoli.
- Seleziona il ruolo associato al cluster.
- Verifica che le autorizzazioni del ruolo includano redshift:RestoreTableFromClusterSnapshot tra le azioni consentite. Aggiorna le autorizzazioni se tale azione non è inclusa.
AWS CLI
Utilizza AWS CLI per ripristinare la tabella e identificare gli errori.
Esempio:
aws redshift restore-table-from-cluster-snapshot —cluster-identifier mycluster-example --new-table-name my-new-table \ --snapshot-identifier my-snapshot-id \ --source-database-name sample-database \ --source-table-name my-source-table
Verifica la compatibilità del cluster
Verifica che il cluster Amazon Redshift corrente corrisponda al cluster in cui hai eseguito lo snapshot. Se hai utilizzato un cluster diverso, il ripristino della tabella non riesce.
Sovrascrivi le tabelle esistenti
Se esiste già una tabella con lo stesso nome, non puoi ripristinarla in un cluster Amazon Redshift. Per verificare se il nome della tabella è già esistente, connettiti al database Amazon Redshift. Quindi esegui questa query SQL:
select * from svv_table_info where “table”='tablename';
Nota: sostituisci tablename con il nome della tabella che desideri ripristinare dallo snapshot.
Informazioni correlate
- Argomenti
- Analytics
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 3 anni fa
AWS UFFICIALEAggiornata 2 anni fa