Amazon Redshift의 스냅샷에서 테이블을 복원하려고 하지만 오류가 발생합니다.
간략한 설명
Amazon Redshift를 사용하면 사용 가능한 기존 스냅샷에서 테이블을 복원할 수 있습니다. 전체 클러스터를 복원할 필요가 없습니다.
스냅샷에서 단일 테이블을 복원할 때는 소스 스냅샷, 데이터베이스, 스키마 및 테이블 이름을 지정합니다. 복원된 테이블의 경우 대상 데이터베이스, 스키마 및 새 이름을 지정합니다.
Amazon Redshift 콘솔을 사용하여 스냅샷에서 테이블 복원을 시작합니다. 또는 RestoreTableFromClusterSnapshot API 작업을 사용합니다. 자세한 내용은 스냅샷에서 테이블 복원을 참조하십시오.
다음과 같은 몇 가지 일반적인 오류로 인해 테이블 수준 복원이 실패합니다.
- Amazon Redshift가 Amazon Simple Storage Service(Amazon S3)의 스냅샷 메타데이터에서 메타데이터 파일이 16MB 한도를 초과하는 테이블을 검색할 수 없습니다. 다음 오류 메시지가 표시됩니다. "Internal Error: Snapshot metadata doesn't exist."
- 스냅샷에서 지정된 스키마를 찾을 수 없는 경우 스냅샷을 만들 때 스키마에 콘텐츠가 없었고 백업이 없는 것입니다. 그러면 "Target schema 'schema name' doesn't exist in the snapshot. Consider using one of the following: <list of schemas available in the snapshot>" 오류 메시지가 표시됩니다.
- 스냅샷에서 지정된 데이터베이스를 찾을 수 없는 경우 스냅샷을 만들 때 데이터베이스에 콘텐츠가 없었고 백업이 없는 것입니다. 그러면 "Target database '<database name>' doesn't exist in snapshot. Consider using: <list of databases available in snapshot>" 오류 메시지가 표시됩니다.
- 테이블을 다른 클러스터로 복원하려 하거나 다른 노드 유형으로 크기를 조정한 후 InvalidClusterState 오류가 표시됩니다.
- 여러 개의 동시 테이블을 복원하려고 하면 InProgressTableRestoreQuotaExceededFault 오류가 표시됩니다.
- 스냅샷에서 존재하지 않는 테이블을 복원하려고 하면 InvalidTableRestoreArgument 오류가 표시됩니다.
- 존재하지 않거나 잘못된 스냅샷에서 복원하려고 하면 ClusterSnapshotNotFound 오류가 표시됩니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
스냅샷 세부 정보 확인
AWS Management Console에서 스냅샷 세부 정보를 검토하여 테이블이 포함되어 있고 클러스터 버전이 호환되는지 확인합니다.
권한 확인
AWS Identity and Access Management(IAM) 사용자 권한을 검토하여 해당 정책이 스냅샷에서 테이블 복원을 허용하는지 확인합니다. 역할 권한을 확인하려면 다음 단계를 완료합니다.
- IAM 콘솔을 엽니다.
- 탐색 창에서 역할을 선택합니다.
- 클러스터와 연결된 역할을 선택합니다.
- 역할 권한의 허용된 작업에 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을 스냅샷에서 복원하려는 테이블 이름으로 바꾸십시오.
관련 정보
스냅샷에서 테이블 제외