メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

Amazon Redshift スナップショット

概要

スナップショットはクラスターのポイントインタイムバックアップです。スナップショットには、自動手動の 2 つのタイプがあります。Amazon Redshift は、暗号化された Secure Sockets Layer (SSL) 接続を使用して、これらのスナップショットを Amazon S3 の内部に保存できます。スナップショットから復元する場合は、Amazon Redshift で新しいクラスターを作成し、指定したスナップショットからデータをインポートします。

スナップショットから復元すると、Amazon Redshift は新しいクラスターを作成し、すべてのデータをロードする前に新しいクラスターを使用できるようにするので、すぐに新しいクラスターのクエリを開始できます。 クラスターは、アクティブなクエリに応じてスナップショットからデータをオンデマンドでストリーミングし、次に残りのデータをバックグラウンドでロードします。

Amazon Redshift は、定期的にスナップショットを作成し、前回のスナップショット以降にクラスターに加えられた差分変更を追跡します。Amazon Redshift には、スナップショットからクラスターを復元するために必要なすべてのデータが保持されます。

スナップショットの詳細を AWS マネジメントコンソール に表示することで、スナップショットの進行状況をモニタリングできます。 または、CLI の describe-cluster-snapshots または DescribeClusterSnapshots API アクションを呼び出すことでもモニタリングできます。 これにより、進行中のスナップショットについて、差分スナップショットのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。

Amazon Redshift では、お使いのクラスターのストレージ容量に等しい空きストレージをスナップショット用に提供しており、これはそのクラスターが削除されるまで有効です。無料スナップショットストレージ制限に達した場合、追加のストレージには通常料金が請求されます。このため、自動スナップショットを保持する必要がある日数を評価し、それに応じて保持期間を設定して、不要になった手動スナップショットは削除してください。料金表については、Amazon Redshift の製品詳細ページを参照してください。

自動スナップショット

自動スナップショットがクラスターに対して有効になると、Amazon Redshift が定期的に、通常は 8 時間ごとまたはデータの変更 5 GB ごとに、そのクラスターのスナップショットを作成します。 自動スナップショットは、クラスターを作成するときデフォルトで有効になります。これらのスナップショットは、保持期間の終了時に削除されます。デフォルトの保持期間は 1 日ですが、Amazon Redshift コンソールを使用するか、Amazon Redshift API を使用してプログラムにより変更できます。

自動スナップショットを無効にするには、保持期間を 0 に設定します。自動スナップショットを無効にした場合、Amazon Redshift はスナップショットの取得を停止し、クラスターの既存の自動スナップショットを削除します。

自動スナップショットを削除できるのは Amazon Redshift だけであり、これを手動で削除することはできません。自動スナップショットは、保存期間が終了した場合、自動スナップショットを無効にした場合、またはクラスターを削除した場合に、Amazon Redshift によって削除されます。自動スナップショットをもっと長い期間保持する場合は、そのコピーを手動スナップショットとして作成します。自動スナップショットは、保持期間が終わるまで保持されますが、対応する手動スナップショットは手動で削除するまで保持されます。

手動スナップショット

自動スナップショットを有効にしたかどうかに関係なく、いつでも好きなときに手動スナップショットを取得できます。手動スナップショットが Amazon Redshift によって自動的に削除されることはありません。手動スナップショットは、クラスターを削除した後も保持されます。

手動スナップショットにはストレージ料金が発生するので、不要になったスナップショットについては手動で削除することが重要です。手動スナップショットを削除した場合、そのスナップショットを参照する新しい操作を開始することはできません。ただし、復元操作が進行中である場合、その復元操作は完了するまで実行されます。

Amazon Redshift には、作成できる手動スナップショットの合計数を制限するクォータがあります。このクォータは AWS アカウントごと、リージョンごとにあります。デフォルトクォータは「AWS サービス制限」に示されています。

スナップショットのテーブルを除く

デフォルトでは、スナップショットにすべてのユーザー定義の永続テーブルが含まれます。 ステージングテーブルなど、テーブルをバックアップする必要のない場合は、スナップショットの作成やスナップショットからの復元にかかる時間を大幅に短縮できます。 さらに、バックアップしないテーブルを使用して、Amazon S3 のストレージ領域を節約することができます。 バックアップしないテーブルを作成するには、テーブルの作成時に BACKUP NO のパラメータを含めてください。 詳細については、Amazon Redshift Database Developer Guide の「CREATE TABLE」および「CREATE TABLE AS」を参照してください。

別のリージョンにスナップショットをコピーする

クラスターのスナップショット (自動または手動) を自動的に別のリージョンにコピーするように Amazon Redshift を設定できます。スナップショットがクラスターのプライマリリージョンで作成されると、セカンダリリージョンにコピーされます。これらは、それぞれソースリージョンおよびコピー先リージョンと呼ばれます。別のリージョンにスナップショットのコピーは保存することで、プライマリリージョンに影響が及んだ場合に最新のデータからクラスターを復元できるようになります。一度に 1 つのコピー先リージョンにのみスナップショットをコピーするようにクラスターを設定できます。Amazon Redshift リージョンのリストについては、アマゾン ウェブ サービス全般のリファレンス の「リージョンとエンドポイント」を参照してください。

Amazon Redshift が別のリージョンに自動的にコピーできるようにするには、スナップショットのコピー先リージョンを指定します。自動スナップショットの場合、コピー先リージョンに保持する保持期間も指定できます。自動スナップショットがコピー先リージョンにコピーされ、保有期間に到達すると、スナップショット使用率を低く抑えるため、コピー先リージョンから削除されます。自動スナップショットをコピー先リージョンに短い期間または長い期間保持する必要があるばあいは、この保持期間を変更できます。

コピー先リージョンにコピーされる自動スナップショットに対して設定する期間は、ソースリージョンの自動スナップショットの保存期間とは異なります。コピーされたスナップショットのデフォルトの保持期間は 7 日です。その 7 日間は、自動スナップショットにのみ適用されます。手動スナップショットは、ソースリージョンでもコピー先リージョンでも保持期間の影響を受けず、手動で削除するまで残ります。

クラスターの自動スナップショットコピーはいつでも無効にできます。この機能を無効にすると、スナップショットがソースリージョンからコピー先リージョンにコピーされなくなります。コピー先リージョンにコピーされら自動スナップショットは、手動スナップショットコピーを作成しない限り、保持期間の制限に達すると削除されます。これらの手動スナップショットと、コピー先リージョンからコピーされた手動スナップショットは、手動で削除するまでコピー先リージョンに保持されます。

スナップショットをコピーするコピー先リージョンを変更する場合、まずこの自動コピー機能を無効にして再度有効にした後、新しいコピー先リージョンを指定する必要があります。

リージョンをまたがってスナップショットをコピーすると、データ転送料金が発生します。スナップショットがコピー先リージョンにコピーされると、アクティブになり、復元目的で利用できるようになります。

AWS KMS で暗号化されたクラスターのスナップショットを別のリージョンにコピーする場合、コピー先のリージョンで AWS KMS カスタマーマスターキー (CMK) を使用する Amazon Redshift の許可を作成する必要があります。その場合、コピー元リージョンでスナップショットのコピーを有効にするときに、その許可を選択する必要があります。スナップショットコピー許可の設定に関する詳細については、「別のリージョンに AWS KMS 暗号化スナップショットコピーする」を参照してください。

スナップショットからのクラスターの復元

スナップショットには、クラスター上で動作しているデータベースからのデータと、クラスターに関する情報 (ノード数、ノートのタイプ、マスターユーザー名など) が含まれます。スナップショットからクラスターを復元する必要がある場合は、Amazon Redshift でクラスター情報を使用して新しいクラスターを作成し、スナップショットデータからすべてのデータベースを復元します。Amazon Redshift がスナップショットから作成した新しいクラスターの設定 (ノード数やノードのタイプなど) は、スナップショットが取得された元のクラスターの設定と同じです。クラスターが復元される場所は、リクエスト時に別のアベイラビリティーゾーンを指定しない限り、同じリージョンおよびアベイラビリティーゾーンとなります。

DescribeClusters API アクションを呼び出すか、AWS マネジメントコンソールでクラスターの詳細を表示することにより、復元の進行状況をモニタリングできます。これにより、進行中の復元について、スナップショットデータのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。これらのメトリクスの説明については、「RestoreStatus」を参照してください。

スナップショットを使用して、アクティブクラスターを前の状態に切り替えることはできません。

注記

新しいクラスターにスナップショットを復元する場合、別の値を指定しない限り、デフォルトのセキュリティグループおよびパラメータグループが使用されます。

スナップショットからのテーブルの復元

注記

エンジンバージョン 1.0.1036 以降を実行しているクラスターで作成されたクラスタースナップショットからのみ、テーブルを復元できます。Amazon Redshift は 2016 年 3 月 10 日 より、エンジンバージョン 1.0.1036 にクラスターをアップグレードしました。コンソールを使用してクラスターのバージョン番号を確認するには、クラスターの [Cluster Properties] を表示します。describe-clusters CLI コマンドまたは DescribeClusters API アクションを使用して、クラスターのバージョン番号を取得することもできます。詳細については、「クラスター構成に関する情報の取得」を参照してください。

クラスター全体を復元する代わりに、スナップショットから単一のテーブルを復元できます。スナップショットから単一のテーブルを復元する場合、ソースのスナップショット、データベース、スキーマ、テーブル名、ターゲットクラスター、スキーマ、および復元されるテーブル用の新しいテーブル名を指定します。

新しいテーブル名を、既存のテーブルの名前にすることはできません。既存のテーブルを、スナップショットから復元されるテーブルに置き換えるには、スナップショットからテーブルを復元する前に、既存のテーブルの名前を変更するか、削除します。

ターゲットテーブルは、ソーステーブルの列の定義、テーブル属性、および外部キーを除く列の属性を使って作成されます。依存関係による競合を回避するため、ターゲットテーブルはソーステーブルから外部キーを継承しません。ソーステーブルで付与されたビューやアクセス権限などの依存関係は、ターゲットテーブルに適用されません。

ソーステーブルの所有者が存在するなら、そのユーザーは指定されたデータベースおよびスキーマの関係において所有者となるのに十分なアクセス許可がある場合にのみ、復元されたテーブルの所有者となります。 それ以外の場合、復元されたテーブルは、クラスターの起動時に作成したマスターユーザーが所有します。

復元されたテーブルは、バックアップが作成された時の状態に戻されます。 これには、Redshift の直列化分離への準拠により定義されるトランザクションの可視性のルールが含まれます。つまり、バックアップ後に開始した実行中のトランザクションにデータがすぐに見えるようになるということです。

スナップショットからのテーブルの復元には、以下の制限があります。

  • テーブルは、実行中のアクティブなクラスターのみに復元でき、そのクラスターから作成されたスナップショットのみから復元できます。

  • 一度に復元できるのは 1 つのテーブルのみです。

  • クラスターのサイズを変更する前に作成されたクラスタースナップショットからテーブルを復元することはできません。

To restore a table from a snapshot using the Amazon Redshift console

  1. AWS マネジメントコンソールにサインインし、Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

  2. Choose Clusters.

  3. Choose the Table restore tab.

    Restore table from snapshot
  4. Choose Restore table.

  5. In the Table restore panel, select a date range that contains the cluster snapshot that you want to restore from. For example, you might select Last 1 Week for cluster snapshots taken in the previous week.

  6. Add the following information:

    • From snapshot – The identifier of the cluster snapshot that contains the table to restore from.

    • Source table to restore from

      • Database – The name of the database from the cluster snapshot that contains the table to restore from.

      • Schema – The name of the database schema from the cluster snapshot that contains the table to restore from.

      • Table – The name of the table from the cluster snapshot to restore from.

    • Target table to restore to

      • Database – The name of the database in the target cluster to restore the table to.

      • Schema – The name of the database schema in the target cluster to restore the table to.

      • New table name – The new name of the restored table. This name cannot be the name of an existing table in the target database.

    Table restore panel
  7. Choose Restore to restore the table.

クラスタースナップショットから少なくとも 1 つのテーブルを復元した場合、前のテーブル復元リクエストの値を、新しいテーブル復元リクエストにコピーできます。この方法を使用すれば、いくつかのテーブル復元オペレーションで同じになる値を再入力する必要がありません。

To copy from a previous table restore request to a new table restore operation:

  1. In the Table restore tab, choose an existing table restore status.

    Copy table restore status to a new table restore request
  2. Choose Copy restore request.

例 例: AWS CLI を使用してスナップショットからテーブルを復元する

次の例では、restore-table-from-cluster-snapshot AWS CLI コマンドを使用して、my-snapshot-idsample-database スキーマから my-source-table テーブルを復元します。例では、新しいテーブルの名前 my-new-table を使用して、mycluster-example クラスターにスナップショットを復元します。

Copy
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

スナップショットの共有

1 つの既存の手動スナップショットについては、そのスナップショットへのアクセスを許可することにより、他の AWS 顧客アカウントのユーザーと共有することができます。各スナップショットは最大 20 個、各 AWS Key Management Service (AWS KMS) キーは最大 100 個まで許可できます。つまり、1 つの KMS キーで暗号化された 10 個のスナップショットがある場合、10 個の AWS アカウントで、各スナップショットを復元することを許可できます。または、最大 100 個のアカウントのその他の組み合わせや、スナップショットごとに 20 アカウントを超えないその他の組み合わせを許可できます。アクセス権限が付与されたいずれかのアカウントのユーザーとしてログインされた担当者は、スナップショットを表示することも、当該アカウントでスナップショットを復元して新しい Amazon Redshift クラスターを作成することもできます。例えば、実稼働用およびテスト用に個別の AWS 顧客アカウントを使用する場合、ユーザーは本番用アカウントを使用してログオンし、テスト用アカウントのユーザーとスナップショットを共有することができます。テスト用アカウントのユーザーとしてログオンされた担当者は、テストまたは診断作業のためのテスト用アカウントによって所有される新しいクラスターを作成するためにスナップショットを復元することができます。

手動スナップショットは、それが作成された AWS 顧客アカウントによって永続的に所有されます。スナップショットを所有するアカウントのユーザーのみが、スナップショットへのアクセスを他のアカウントに許可したり、アクセス許可を取り消したりすることができます。アクセス権限が付与されたアカウントのユーザーは、そのアカウントと共有されているスナップショットの表示または復元が行えるだけで、共有されているスナップショットのコピーや削除を行うことはできません。アクセス許可はスナップショットの所有者がそれを取り消すまで有効です。アクセス許可が取り消されると、前にアクセス権限を付与されたユーザーはスナップショットの可視性を失い、スナップショットを参照する新しいアクションを起動できなくなります。アクセス権限が取り消される際、アカウントがスナップショットを復元するプロセスの途中にあった場合、復元は完了するまで実行されます。スナップショットにアクティブ認可がある限り、そのスナップショットを削除することはできません。まず、すべてのアクセス許可を取り消す必要があります。

AWS 顧客アカウントには、該当するアカウントによって所有されるスナップショットへのアクセスが常に許可されます。所有者アカウントへのアクセスを許可する試みまたは取り消す試みを行うと、エラーが発生します。非アクティブ AWS 顧客アカウントによって所有されているスナップショットを復元または表示することはできません。

AWS 顧客アカウントへのアクセスを許可した場合、そのアカウントの IAM ユーザーはスナップショットでのアクションの実行を許可する IAM ポリシーを持っていない限り、そのようなアクションを実行できません。

  • スナップショット所有者アカウントの IAM ユーザーがスナップショットへのアクセスを許可および取り消しできるのは、それらのユーザーが、当該スナップショットが含まれるリソース仕様を使用してそうしたアクションを実行することを許可してくれる IAM ポリシーを持っている場合に限られます。たとえば、以下のポリシーを持っていれば、AWS アカウント 012345678912 のユーザーは、my-snapshot20130829 という名前のスナップショットへのアクセスを他のアカウントに許可することができます。

    Copy
    { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:AuthorizeSnapshotAccess", "redshift:RevokeSnapshotAccess" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829" ] } ] }
  • スナップショットが共有されている AWS アカウントの IAM ユーザーは、そのスナップショットでアクションを実行することを許可する IAM ポリシーを持っていない限り、そうしたアクションを実行することはできません。

    • スナップショットを一覧表示するか、または表示するためには、前述ユーザーは DescribeClusterSnapshots アクションを許可する IAM ポリシーを持っている必要があります。コードの例を以下に示します。

      Copy
      { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusterSnapshots" ], "Resource":[ "*" ] } ] }
    • スナップショットを復元するには、ユーザーは、RestoreFromClusterSnapshot アクションを許可すると共に、ユーザーが作成しようとしているクラスターとスナップショットを両方ともカバーしたリソースエレメントを含んでいる IAM ポリシーを持っている必要があります。たとえば、アカウント 012345678912 のユーザーがスナップショット my-snapshot20130829 をアカウント 219876543210 と共有している場合、スナップショットを復元してクラスターを作成するには、アカウント 219876543210 のユーザーが次のようなポリシーを持っている必要があります。

      Copy
      { "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:RestoreFromClusterSnapshot" ], "Resource":[ "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829", "arn:aws:redshift:us-east-1:219876543210:cluster:from-another-account" ] } ] }
    • スナップショットへのアクセスが AWS アカウントによって取り消されると、そのアカウントのユーザーは、前に共有していたスナップショットリソースでのアクションを許可する IAM ポリシーを持っていたとしても、スナップショットにアクセスできなくなります。

このページの内容: