Ir para o conteúdo

Como posso solucionar erros de restauração de tabelas a partir de um snapshot no Amazon Redshift?

4 minuto de leitura
0

Quero restaurar uma tabela a partir de um snapshot no Amazon Redshift, mas recebo um erro.

Breve descrição

O Amazon Redshift permite que você restaure uma tabela a partir de seus snapshots disponíveis. Você não precisa restaurar um cluster inteiro.

Ao restaurar uma única tabela a partir de um snapshot, especifique o snapshot de origem, o banco de dados, o esquema e o nome da tabela. Para uma tabela restaurada, especifique o banco de dados de destino, o esquema e um novo nome.

Use o console do Amazon Redshift para iniciar uma restauração de tabela a partir do snapshot. Ou use a operação da API RestoreTableFromClusterSnapshot. Para obter mais informações, consulte Restaurar uma tabela a partir de um snapshot.

A restauração em nível de tabela falha devido a alguns dos seguintes erros comuns:

  • O Amazon Redshift não pode recuperar metadados de um snapshot do Amazon Simple Storage Service (Amazon S3) para tabelas com arquivos de metadados acima do limite de 16 MB. Se você receber a seguinte mensagem de erro: “Internal error: Snapshot metadata doesn't exist.”
  • Se você não conseguir encontrar o esquema especificado no snapshot, então o esquema não tinha conteúdo quando você criou o snapshot e não tem backup. Em seguida, você recebe a mensagem de erro "Target schema 'schema name' doesn't exist in the snapshot. Considere usar uma das seguintes opções: <list of schemas available in the snapshot>”.
  • Se você não conseguir encontrar o banco de dados especificado no snapshot, o banco de dados não tinha conteúdo quando você criou o snapshot e não tinha backup. Em seguida, você recebe a mensagem de erro “Target database '<database name>' doesn't exist in snapshot. Consider using: <list of databases available in snapshot>”.
  • Se você tentar restaurar uma tabela em um cluster diferente ou depois de redimensionar diferentes tipos de nós, receberá um erro InvalidClusterState.
  • Se você tentar restaurar várias tabelas simultâneas, receberá um erro InProgressTableRestoreQuotaExceededFault.
  • Se você tentar restaurar uma tabela inexistente a partir de um snapshot, receberá um erro InvalidTableRestoreArgument.
  • Se você tentar restaurar a partir de um snapshot inexistente ou incorreto, receberá um erro ClusterSnapshotNotFound.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Verifique os detalhes do snapshot

Analise os detalhes do snapshot no Console de Gerenciamento da AWS para confirmar se a tabela está incluída e se a versão do cluster é compatível.

Verifique as permissões

Analise suas permissões de usuário do AWS Identity and Access Management (AWS IAM) para garantir que a política permita restaurações de tabelas a partir de snapshots. Para verificar as permissões do perfil, conclua as seguintes etapas:

  1. Abra o console do IAM.
  2. No painel de navegação, escolha Perfis.
  3. Selecione o perfil associado ao cluster.
  4. Verifique se as permissões do perfil incluem redshift:RestoreTableFromClusterSnapshot nas ações permitidas. Se as permissões não incluírem, atualize as permissões.

AWS CLI

Use o AWS CLI para restaurar a tabela e identificar os erros.

Exemplo:

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

Verifique a compatibilidade do cluster

Verifique se o cluster atual do Amazon Redshift corresponde ao cluster em que você tirou o snapshot. Se você usou um cluster diferente, a restauração da tabela falhará.

Substituir as tabelas existentes

Se uma tabela com o mesmo nome já existir, não será possível restaurá-la em um cluster do Amazon Redshift. Para verificar se o nome da tabela já existe, conecte-se ao banco de dados do Amazon Redshift. Em seguida, execute a seguinte consulta SQL:

select * from svv_table_info where “table”='tablename';

Observação: substitua tablename pelo nome da tabela que você deseja restaurar a partir do snapshot.

Informações relacionadas

Excluindo tabelas de snapshots

AWS OFICIALAtualizada há um ano