Je souhaite restaurer une table à partir d'un instantané dans Amazon Redshift, mais je reçois un message d'erreur.
Brève description
Amazon Redshift vous permet de restaurer une table à partir de vos instantanés disponibles existants. Il n'est pas nécessaire de restaurer un cluster entier.
Lorsque vous restaurez une seule table à partir d'un instantané, spécifiez l’instantané source, la base de données, le schéma et le nom de la table. Pour une table restaurée, spécifiez la base de données cible, le schéma et un nouveau nom.
Utilisez la console Amazon Redshift pour lancer une restauration de table à partir d'un instantané. Vous pouvez également utiliser l'opération d'API RestoreTableFromClusterSnapshot. Pour en savoir plus, consultez la section Restaurer une table à partir d’un instantané.
Une restauration au niveau de la table échoue pour certaines des erreurs courantes suivantes :
- Amazon Redshift ne peut pas récupérer les métadonnées d’instantanés depuis Amazon Simple Storage Service (Amazon S3) pour les tables dont les fichiers de métadonnées dépassent la limite de 16 Mo. Le message d’erreur suivant s’affiche : « Internal Error: Snapshot metadata doesn't exist. » (Erreur interne : les métadonnées d’instantané n'existent pas.)
- Si vous ne trouvez pas le schéma spécifié dans l'instantané, cela signifie que le schéma n'avait aucun contenu lorsque vous avez créé l’instantané et qu’il ne dispose d’aucune sauvegarde. Ensuite, vous recevez le message d’erreur « Target schema 'schema name' doesn't exist in the snapshot. Consider using one of the following: <list of schemas available in the snapshot>» (Le schéma cible 'nom du schéma' n’existe pas dans l'instantané. Pensez à utiliser l'une des solutions suivantes :)
- Si vous ne trouvez pas la base de données spécifiée dans l’instantané, cela signifie que la base de données n’avait aucun contenu lorsque vous avez créé l’instantané et qu’il ne dispose d’aucune sauvegarde. Puis, vous recevez le message d’erreur « Target database '<database name>' doesn't exist in snapshot. Consider using: <list of databases available in snapshot>» (La base de données cible ' ' n’existe pas dans l'instantané. Pensez à utiliser l'une des solutions suivantes :)
- Si vous essayez de restaurer une table dans un autre cluster ou après avoir redimensionné différents types de nœuds, le message d'erreur InvalidClusterState s'affiche :
- Si vous essayez de restaurer plusieurs tables simultanées, le message d'erreur InProgressTableRestoreQuotaExceededFault s'affiche.
- Si vous essayez de restaurer une table inexistante à partir d'un instantané, le message d’erreur InvalidTableRestoreArgument s’affiche.
- Si vous tentez une restauration à partir d'un instantané inexistant ou incorrect, le message d'erreur ClusterSnapshotNotFound s'affiche.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Vérifier les détails de l'instantané
Consultez les détails de l'instantané dans la console de gestion AWS pour vous assurer que la table est incluse et que la version du cluster est compatible.
Vérifier les autorisations
Vérifiez vos autorisations utilisateur de gestion des identités et des accès AWS (AWS IAM) pour vous assurer que la politique autorise les restaurations de tables à partir d’instantanés. Pour vérifier les autorisations de rôle, procédez comme suit :
- Ouvrez la console IAM.
- Dans le volet de navigation, choisissez Rôles.
- Sélectionnez le rôle associé au cluster.
- Vérifiez que les autorisations de rôle incluent redshift:RestoreTableFromClusterSnapshot dans les actions autorisées. Si les autorisations ne sont pas incluses, mettez-les à jour.
AWS CLI
Utilisez l'interface de ligne de commande AWS pour restaurer la table et identifier les erreurs.
Exemple :
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
Vérifier la compatibilité du cluster
Vérifiez que votre cluster Amazon Redshift actuel correspond à celui dans lequel vous avez pris l’instantané. Si vous avez utilisé un autre cluster, la restauration de la table échoue.
Remplacer les tables existantes
Si une table portant le même nom existe déjà, vous ne pouvez pas la restaurer dans un cluster Amazon Redshift. Pour vérifier si le nom de la table existe déjà, connectez-vous à la base de données Amazon Redshift. Exécutez ensuite la requête SQL suivante :
select * from svv_table_info where “table”='tablename';
Remarque : Remplacez tablename par le nom de la table que vous souhaitez restaurer à partir de l'instantané.
Informations connexes
Exclusion de tables des instantanés