Quiero restaurar una tabla a partir de una instantánea en Amazon Redshift, pero recibo un error.
Descripción corta
Amazon Redshift te permite restaurar una tabla a partir de las instantáneas disponibles existentes. No es necesario restaurar un clúster completo.
Al restaurar una sola tabla a partir de una instantánea, especifica la instantánea de origen, la base de datos, el esquema y el nombre de la tabla. Para una tabla restaurada, especifica la base de datos de destino, el esquema y un nombre nuevo.
Utiliza la consola de Amazon Redshift para iniciar una restauración de tablas a partir de una instantánea. O bien, utiliza la operación de API RestoreTableFromClusterSnapshot. Para obtener más información, consulta Restauración de una tabla a partir de una instantánea.
Se produce un error en la restauración a nivel de tabla debido a algunos de los siguientes errores comunes:
- Amazon Redshift no puede recuperar los metadatos de la instantánea de Amazon Simple Storage Service (Amazon S3) para tablas con archivos de metadatos que superen el límite de 16 MB. Si recibes el siguiente mensaje de error: «Internal Error: Snapshot metadata doesn't exist».
- Si no puedes encontrar el esquema especificado en la instantánea, significa que el esquema no tenía contenido cuando creaste la instantánea y no tiene ninguna copia de seguridad. A continuación, se muestra el mensaje de error «Target schema 'schema name' doesn't exist in the snapshot. Consider using one of the following: <list of schemas available in the snapshot>».
- Si no puedes encontrar la base de datos especificada en la instantánea, significa que la base de datos no tenía contenido cuando creaste la instantánea y no tiene ninguna copia de seguridad. A continuación, se muestra el mensaje de error «Target database "<database name>" doesn't exist in snapshot. Consider using: <list of databases available in snapshot>».
- Si intentas restaurar una tabla en un clúster diferente o después de cambiar el tamaño de diferentes tipos de nodos, se mostrará un error InvalidClusterState.
- Si intentas restaurar varias tablas simultáneas, se mostrará un error InProgressTableRestoreQuotaExceededFault.
- Si intentas restaurar una tabla inexistente a partir de una instantánea, se mostrará un error InvalidTableRestoreArgument.
- Si intentas restaurar a partir de una instantánea inexistente o incorrecta, se mostrará un error ClusterSnapshotNotFound.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Comprobar los detalles de la instantánea
Revisa los detalles de la instantánea en la consola de administración de AWS para confirmar que la tabla está incluida y que la versión del clúster es compatible.
Verificar los permisos
Revisa tus permisos de usuario de AWS Identity and Access Management (IAM) para asegurarte de que la política permite la restauración de tablas a partir de instantáneas. Para comprobar los permisos del rol, sigue estos pasos:
- Abre la consola de IAM.
- En el panel de navegación, selecciona Roles.
- Selecciona el rol que está asociado al clúster.
- Comprueba que los permisos del rol incluyan redshift:RestoreTableFromClusterSnapshot en las acciones permitidas. Si los permisos no están incluidos, actualízalos.
AWS CLI
Utiliza la AWS CLI para restaurar la tabla e identificar los errores.
Ejemplo:
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
Comprobar la compatibilidad del clúster
Comprueba que tu clúster actual de Amazon Redshift coincida con el clúster en el que tomaste la instantánea. Si usaste un clúster diferente, se produce un error en la restauración de la tabla.
Sobrescribir tablas existentes
Si ya existe una tabla con el mismo nombre, no podrás restaurarla en un clúster de Amazon Redshift. Para comprobar si el nombre de la tabla ya existe, conéctate a la base de datos de Amazon Redshift. A continuación, ejecuta la siguiente consulta SQL:
select * from svv_table_info where “table”='tablename';
Nota: Sustituye tablename por el nombre de la tabla que deseas restaurar a partir de la instantánea.
Información relacionada
Exclusión de tablas de las instantáneas