スキップしてコンテンツを表示

Amazon Redshift のスナップショットからテーブルを復元する際のエラーをトラブルシューティングする方法を教えてください。

所要時間1分
0

Amazon Redshift のスナップショットからテーブルを復元したいのですが、エラーが発生します。

簡単な説明

Amazon Redshift では、既存の使用可能なスナップショットからテーブルを復元できます。クラスター全体を復元する必要はありません。

スナップショットから 1 つのテーブルを復元する場合は、ソースとなるスナップショット、データベース、スキーマ、およびテーブル名を指定します。復元するテーブルには、ターゲットデータベース、スキーマ、および新しい名前を指定します。

Amazon Redshift コンソールを使用して、スナップショットからテーブル復元を開始します。RestoreTableFromClusterSnapshot API 操作を使用することもできます。詳細については、「スナップショットからテーブルを復元する」を参照してください。

次の一般的なエラーのいくつかが要因で、テーブルレベルの復元は失敗します。

  • Amazon Redshift は、メタデータファイルが 16 MB の制限を超えるテーブルのスナップショットメタデータを Amazon Simple Storage Service (Amazon S3) から取得できません。次のエラーメッセージが表示されます。 「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 コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

スナップショットの詳細を確認する

AWS マネジメントコンソールでスナップショットの詳細をレビューし、テーブルが含まれており、クラスターバージョンが準拠していることを確認します。

アクセス許可を確認する

AWS Identity and Access Management (IAM) のユーザーアクセス許可をレビューし、ポリシーでスナップショットからのテーブル復元が許可されていることを確認します。ロールのアクセス許可を確認するには、次の手順を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションパネルで [ロール] を選択します。
  3. クラスターに関連付けられているロールを選択します。
  4. ロールのアクセス許可において、許可されたアクションに 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 をスナップショットから復元するテーブル名に置き換えます。

関連情報

スナップショットからテーブルを除外する

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ