我想从 Amazon Redshift 中的快照恢复表,但我收到了一个错误。
简短描述
Amazon Redshift 允许您从现有的可用快照中恢复表。您不必恢复整个集群。
当您从快照恢复单个表时,请指定源快照、数据库、架构和表名称。对于已恢复的表,请指定目标数据库、架构和新名称。
使用 Amazon Redshift 控制台启动从快照恢复表的操作。或者,使用 RestoreTableFromClusterSnapshot API 操作。有关详细信息,请参阅从快照中恢复表。
由于以下一些常见错误,表级恢复失败:
- 对于元数据文件超过 16 MB 限制的表,Amazon Redshift 无法从 Amazon Simple Storage Service (Amazon S3) 检索快照元数据。您会收到以下错误消息: “内部错误: 快照元数据不存在。”
- 如果您在快照中找不到指定的架构,则该架构在您创建快照时没有内容,也没有备份。然后,您会收到错误消息“目标架构‘架构名称’在快照中不存在。请考虑使用以下方法之一: <list of schemas available in the snapshot>”。
- 如果在快照中找不到指定的数据库,则该数据库在您创建快照时没有内容,也没有备份。然后,您会收到错误消息“目标数据库‘<database name>’不存在于快照中。请考虑使用: <list of databases available in snapshot>”。
- 如果您尝试将表恢复到其他群集或调整不同节点类型的大小后,则会收到 InvalidClusterState 错误。
- 如果您尝试恢复多个并发表,则会收到 InProgressTableRestoreQuotaExceededFault 错误。
- 如果您尝试从快照中恢复不存在的表,则会收到 InvalidTableRestoreArgument 错误。
- 如果您尝试从不存在或不正确的快照中恢复,则会收到 ClusterSnapshotNotFound 错误。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
查看快照详细信息
在 AWS 管理控制台中查看快照详细信息,以确认该表已包含在内且集群版本兼容。
验证权限
检查您的 AWS Identity and Access Management (IAM) 用户权限,以确保该策略允许从快照恢复表。要查看 IAM 权限,请完成以下步骤:
- 打开 IAM 控制台。
- 在导航窗格中,选择 Roles(角色)。
- 选择与集群关联的角色。
- 验证角色权限是否在允许的操作下包含 redshift:RestoreTableFromClusterSnapshot。如果权限不包含,请更新权限。
AWS CLI
使用 AWS CLI 恢复表并识别错误。
示例:
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
检查集群兼容性
检查您当前的 Amazon Redshift 集群是否与您创建快照的集群相匹配。如果您使用了其他集群,则表恢复将失败。
覆盖现有表
如果已存在同名表,则无法将表恢复到 Amazon Redshift 集群。要检查表名是否已存在,请连接到 Amazon Redshift 数据库。然后,运行以下 SQL 查询:
select * from svv_table_info where “table”='tablename';
**注意:**将 tablename 替换为要从快照中恢复的表名。
相关信息
从快照中排除表