スナップショットと復旧ポイントの操作 - Amazon Redshift

スナップショットと復旧ポイントの操作

Amazon Redshift Serverless のバックアップは、名前空間内のオブジェクトとデータをポイントインタイムの表現です。バックアップには、手動で作成されるスナップショットと、Amazon Redshift Serverless が自動的に作成する復旧ポイントの 2 種類があります。復旧ポイントは 30 分ごとに作成され、24 時間保持されます。

スナップショットまたは復旧ポイントのデータを取得する場合は、サーバーレス名前空間またはプロビジョン済みのクラスターにスナップショットを復元できます。スナップショットを復元するには、次の 3 つのシナリオがあります。

  • サーバーレススナップショットをサーバーレス名前空間に復元します。

  • サーバーレススナップショットをプロビジョニングされたクラスターに復元します。

  • プロビジョニングされたクラスタースナップショットをサーバーレス名前空間に復元します。

プロビジョン済みのクラスターにサーバーレス スナップショットを復元する場合は、使用するノードタイプ (RA3 など) とノードの数を選択する必要があります。これにより、クラスターまたはノードレベルで設定を制御できます。

プロビジョニングされたクラスターのスナップショットをサーバーレス名前空間に復元するには、Redshift プロビジョニングコンソールから開始し、復元するスナップショットを選択して、[Restore from snapshot] (スナップショットからの復元)、[Restore to serverless namespace] (サーバーレス名前空間に復元する) を選択します。プロビジョニングされたクラスタースナップショットをサーバーレス名前空間に復元すると、Amazon Redshift はインターリーブキーを含むテーブルを複合ソートキーに変換します。ソートキーの詳細については、「ソートキーの使用」を参照してください。

さらにコンテキストを追加したい場合は、スナップショットとリカバリポイントにメタデータと情報を提供するキーと値のペアでスナップショットとリカバリポイントにタグを付けることができます。リソースへのタグ付けの詳細については、「リソースのタグ付けの概要」を参照してください。

最後に、スナップショットを他の AWS アカウントと共有することもできます。これにより、スナップショット内のデータにアクセスし、クエリを実行できるようになります。

スナップショット

Amazon Redshift Serverless コンソールで作成したスナップショットを、ワークグループに関連付けられている使用可能な名前空間に復元できます。クエリや変更の準備ができたら、名前空間は使用可能になります。AWS マネージド KMS キーで暗号化されたスナップショットをサーバーレス名前空間に復元できます。

Amazon Redshift Serverless コンソールで、すべてのスナップショットのリストを表示するには、[Data backup] (データバックアップ) を選択します。

スナップショットを作成する方法
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. [Create snapshot] (スナップショットを作成) を選択します。

  3. スナップショットを作成する名前空間を選択します。

  4. スナップショット ID を入力します。

  5. (オプション) 保持期間を選択します。[Custom value] (カスタム値) を選択した場合は、日数を選択します。選択する値は、1 ~ 3,653 日の間でなければなりません。デフォルトは [retain indefinitely] (無期限に保持) です。

  6. [作成] を選択します。

名前空間の設定からスナップショットを作成するには
  1. Amazon Redshift Serverless コンソールで、[Namespace configuration] (名前空間の設定) を選択します。

  2. スナップショットを作成する名前空間を選択します。作成できるのは、ワークグループに関連付けられ、ステータスが [Available] (使用可能) の名前空間のスナップショットのみです。

  3. [Data backup] (データバックアップ) タブを選択します。

  4. [スナップショットを作成] を選択します。

  5. スナップショット ID を入力します。

  6. (オプション) 保持期間を選択します。[Custom value] (カスタム値) を選択した場合は、日数を選択します。選択する値は、1 ~ 3,653 日の間でなければなりません。

  7. [Create] (作成) を選択します。

スナップショットの保存期間を更新するには
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 更新するスナップショットを選択します。

  3. [Actions] (アクション)、[Set manual snapshot settings] (手動スナップショット設定) の順に選択します。

  4. 保持期間を選択します。[Custom value] (カスタム値) を選択した場合は、日数を選択します。

  5. [Save changes] (変更の保存) をクリックします。

スナップショットを削除するには
注記

別のアカウントと共有しているスナップショットは削除できません。スナップショットを削除する前に、まず、そのアカウントのスナップショットへのアクセス権を削除する必要があります。

  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 削除するスナップショットを選択します。

  3. [Actions] (アクション) で、[Delete] (削除) を選択します。

  4. [Delete] (削除) を選択します。

名前空間を削除する前に、名前空間内のすべてのデータの最終スナップショットを作するには
  1. Amazon Redshift Serverless コンソールで、[Namespace configuration] (名前空間の設定) を選択します。

  2. 削除する名前空間を選択します。

  3. [アクション][削除] の順に選択します。

  4. [Create final snapshot] (最終スナップショットの作成) を選択します。

  5. スナップショットの名前を入力します。

  6. delete (削除) と入力します。

  7. [Delete] (削除) をクリックします。

スナップショットを別の AWS アカウントと共有したり、スナップショットへのアカウントのアクセス権を削除したりするには
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 共有するスナップショットを選択します。

  3. [Action] (アクション)、[Manage access] (アクセスの管理) の順にクリックします。

  4. 別のアカウントとスナップショットを共有するには、[AWS アカウント ID] を入力します。アカウントからアクセス権を削除するには、[削除] を選択します。

  5. [Save changes] (変更の保存) をクリックします。

スナップショットの復元

サーバーレス名前空間にスナップショットを復元すると、現在のデータベースがスナップショット内のデータベースに置き換えられます。

サーバーレス名前空間へのスナップショットの復元は、2 つの段階で行われます。最初の段階は数分で完了します。この段階では、データを名前空間に復元し、クエリで使用できるようにします。2 番目の段階では、データベースのチューニングが行われ、小さなパフォーマンスの問題が発生する可能性があります。この 2 番目の段階は、数時間から数日、場合によっては数週間必要となる場合があります。この処理時間の長さはデータのサイズによって異なりますが、データベースのチューニングが進むと、パフォーマンスは徐々に向上します。この段階の終了時には、サーバーレス名前空間が完全にチューニングされ、クエリの送信時にパフォーマンスが発生しません。

スナップショットをサーバーレス名前空間に復元するには
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 復元するスナップショットを選択します。一度に復元できるのは 1 つのスナップショットのみです。

  3. [Actions] (アクション)、[Restore to serverless namespace] (サーバーレス名前空間に復元する) の順に選択します。

  4. 復元先に使用可能な名前空間を選択します。ステータスが [Available] (使用可能) の名前空間にのみ復元できます。

  5. [復元] を選択します。

スナップショットをプロビジョニングされたクラスターに復元するには
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 復元するスナップショットを選択します。

  3. [Actions] (アクション)、[Restore to provisioned cluster] (プロビジョニングされたクラスターに復元する) の順に選択します。

  4. クラスター識別子を入力します。

  5. [Node type] (ノードタイプ) を選択します。ノード数は、ノードタイプによって異なります。

  6. コンソールページの指示に従って [Cluster configuration] (クラスター設定)のプロパティを入力します。詳細については、「クラスターの作成」を参照してください。

プロビジョン済みクラスター上のスナップショットの詳細については、「Amazon Redshift のスナップショットとバックアップ」を参照してください。

復旧ポイント

Amazon Redshift Serverless の復旧ポイントは約 30 分ごとに作成され、24 時間保存されます。

Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択して、復元ポイントを管理します。以下の操作が行えます。

  • 復旧ポイントでのサーバーレス名前空間の復元。

  • 復旧ポイントのスナップショットへの変換。

サーバーレス名前空間を復旧ポイントに復元するには
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 復旧ポイントで、復元する復旧ポイントの [Creation time] (作成時刻) を選択します。

  3. [復元] を選択します。ステータスが [Available] (利用可能) の名前空間にのみ復元できます。

  4. テキスト入力フィールドに restore (復元) と入力し、[Restore] (復元) を選択します。

復旧ポイントをスナップショットに変換するには
  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 復旧ポイントで、スナップショットに変化する復旧ポイントの [Creation time] (作成時刻) を選択します。

  3. [Create snapshot from recovery point] (復旧ポイントからスナップショットを作成する) を選択します。

  4. スナップショット ID を入力します。

  5. [Create] (作成) を選択します。

スナップショットのスケジュール設定

スナップショットを作成するタイミングを正確に制御するために、特定の名前空間のスナップショットスケジュールを作成できます。スナップショットの作成をスケジュールする場合、1 回限りのイベントを作成することも、Unix の cron 式を使用して定期的なスケジュールを作成することもできます。Cron 式では、空白文字区切りの 3 つのフィールドをサポートします。

cron(Minutes Hours Day-of-month Month Day-of-week Year)
フィールド ワイルドカード

0~59

, - * /

時間

0~23

, - * /

1~31

, - * ? / L W

1~12 または JAN~DEC

, - * /

曜日

1~7 または SUN~SAT

, - * ? L #

1970~2199

, - * /

ワイルドカード
  • , (カンマ) のワイルドカードには、追加の値が含まれます。Day-of-week フィールドの、MON,WED,FRI は、月曜日、水曜日、金曜日を含みます。合計値はフィールドあたり 24 に制限されています。

  • - (ダッシュ) のワイルドカードは、範囲を指定します。Hour フィールドの、「1~15」は、指定した日の 1 時間から 15 時間を含みます。

  • [*] (アスタリスク) のワイルドカードには、フィールドのすべての値が含まれます。Hours フィールドの、* にはすべての時間が含まれています。

  • / (スラッシュ) のワイルドカードは、増分を指定します。Hours フィールドで、1/10 と入力して、その日の最初の時間から始めて、10 時間毎を指定できます (01:00、11:00、21:00 など)。

  • [?] (疑問符) のワイルドカードは、任意を意味します。Day-of-month フィールドで 7 と入力し、7 日が何曜日であってもかまわない場合、Day-of-week フィールドに ? を入力できます。

  • Day-of-month フィールドまたは Day-of-week フィールドにある [L] のワイルドカードは、月または週の最終日を指定します。

  • Day-of-month フィールドの、ワイルドカード W は、平日を指定します。Day-of-month フィールドで、3W は月の 3 番目の平日に最も近い日を指定します。

  • Day-of-week フィールドの # ワイルドカードは、月の指定された曜日の特定のインスタンスを指定します。例えば、3#2 は、月の第 2 火曜日を示します。3 は週の 3 番目の日 (火曜日) を示し、2 は月のそのタイプの 2 番目の日を示します。

    注記

    「#」文字を使用する場合、曜日フィールドには 1 つの式しか定義できません。例えば、「3#1,6#3」は 2 つの式として解釈されるため、無効です。

制限
  • Cron 式の Day-of-month フィールドと Day-of-week フィールドを同時に指定することはできません。一方のフィールドに値を指定する場合、もう一方のフィールドで [?] (疑問符) を使用する必要があります。

  • スナップショットスケジュールは以下の頻度をサポートしていません。

    • 1 時間に 1 回を超える頻度でスケジュールされるスナップショット。

    • 1 日 (24 時間) に 1 回未満の頻度でスケジュールされるスナップショット。

    1 時間以内にスナップショットをスケジュールする結果になる重複したスケジュールがある場合、検証エラーが発生します。

cron 文字列の例は、次の表のとおりです。

時間 曜日 意味

0

14-20/1

毎週火曜日の午後 2 時から午後 8 時の間。

0

21

MON-FRI

毎晩、月曜日~金曜日の午後9時。

30

0/6

土 - 日

土曜日と日曜日は、その日の深夜 30 分過ぎ (00:30) から、6 時間ごとに増分されます。これにより、各日とも [00:30、06:30、12:30、および 18:30] にスナップショットが作成されます。

30

12/4

*

毎日 12:30 から 4 時間ごとに増分します。これにより [12:30、16:30、20:30] となります。

毎日 15:15 から 2 時間ずつ実行するスケジュールを作成する方法は、次の例のとおりです。

cron(15 15/2 *)

スナップショットスケジュールの作成には、現時点では Amazon Redshift Serverless API または AWS CLI のみを使用できます。このオペレーションの詳細については、「AWS CLI と Amazon Redshift Serverless API の使用」を参照してください。

別の AWS リージョン へのバックアップのコピー

スナップショットと復旧ポイントを別の AWS リージョン に自動的にコピーするように Amazon Redshift Serverless を設定できます。ソース AWS リージョン でスナップショットを作成すると、このスナップショットは、送信先リージョンにコピーされます。スナップショットと復旧ポイントを一度に単一の送信先 AWS リージョン にのみコピーするように名前空間を設定できます。Amazon Redshift Serverless が利用できる AWS リージョン の一覧については、「Amazon Web Services 全般のリファレンス」の「Redshift Serverless API」に記載されているエンドポイントを参照してください。

バックアップのコピーを設定する際は、コピーされたスナップショットを Amazon Redshift Serverless が保持する期間を指定することもできます。復旧ポイントの保持期間は変更できず、1 日である必要があります。送信先リージョンのスナップショットの保持期間は、ソースリージョンのスナップショットの保持期間とは異なります。この保持期間はデフォルトでは、スナップショットの無期限の保持です。[カスタム値] を選択した場合は日数を選択します。この値は、1~3,653 日の範囲で選択する必要があります。

スナップショットのコピーの送信先リージョンを変更するには、まずバックアップのコピーを無効にしてから、コピーを再度有効にする際に新しい送信先リージョンを指定します。

スナップショットまたは復旧ポイントを送信先リージョンにコピーしたら、これを使用してデータを送信先リージョンで復元できます。

データはデフォルトで AWS マネージドキーを使用して暗号化されます。別のキーを使用するには、ソース AWS リージョン でバックアップコピーを設定する際に使用するキーを選択すると、Amazon Redshift Serverless が権限を自動的に作成し、送信先 AWS リージョン でスナップショット暗号化が有効になります。

バックアップを別のリージョンにコピーするには、次の IAM アクセス許可があることを確認します。

redshift-serverless:CreateSnapshotCopyConfiguration redshift-serverless:UpdateSnapshotCopyConfiguration redshift-serverless:ListSnapshotCopyConfigurations redshift-serverless:DeleteSnapshotCopyConfiguration

独自の KMS キーを使用してバックアップを暗号化する場合は、次のアクセス許可も必要です。

kms:CreateGrant kms:DescribeKey

スナップショットまたは復旧ポイントを別の AWS リージョン にコピーするように設定するには

  1. Amazon Redshift Serverless コンソールで、スナップショットまたは復旧ポイントのコピーを設定する名前空間を選択します。

  2. [アクション][クロスリージョンバックアップの設定] を選択します。

  3. スナップショットをコピーする送信先 AWS リージョン を選択します。

  4. (オプション) スナップショットの保持期間を選択します。[カスタム値]を選択する場合は日数を選択します。この値は、1~3,653 日の間で選択する必要があります。デフォルトでは無期限に保持されます。

  5. (オプション) 送信先リージョンでの暗号化に使用する別の AWS KMS キーを選択します。

  6. [設定の保存] を選択します。

テーブルの復元

スナップショットまたは復旧ポイントから特定のテーブルを復元することもできます。この場合は、ソース スナップショットまたは復旧ポイント、データベース、スキーマ、テーブル、ターゲットデータベース、スキーマ、新しいテーブル名を指定します。この新しいテーブルは、既存のテーブルと同じ名前は使用できません。テーブルを復元して既存のテーブルを置き換える場合は、テーブルを復元する前に、まずテーブル名を変更するか削除する必要があります。

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

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

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

Amazon Redshift Serverless コンソールを使用して、スナップショットからテーブルを復元できます。

データバックアップからのテーブルの復元には、次のとおりの制限があります。

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

  • ソーステーブルで付与されたビューや許可などの依存関係は、ターゲットテーブルに適用されません。

  • 復元中のテーブルに対して行レベルのセキュリティが有効になっている場合、Amazon Redshift Serverless は、行レベルのセキュリティがオンになっているテーブルを復元します。

Amazon Redshift Serverless コンソールを使用してテーブルを復元するには

  1. Amazon Redshift Serverless コンソールで、[Data backup] (データのバックアップ) を選択します。

  2. 復元するテーブルを含むスナップショットまたは復旧ポイントを選択します。

  3. [アクション][スナップショットからテーブルを復元する] または [Restore table from recovery point] を選択します。

  4. ソースのスナップショットまたは復旧ポイントとターゲットテーブルに関する情報を入力して、[テーブルの復元] をクリックします。

AWS Command Line Interface と Amazon Redshift Serverless API の使用

AWS コンソールの使用とは別に、AWS CLIまたは Amazon Redshift Serverless API を使用して、スナップショットと復旧ポイントを操作することもできます。スナップショットと復旧ポイントの管理に使用できる API と CLI のオペレーションは、次の表のとおりです。

API オペレーション CLI コマンド 説明

CreateSnapshot

create-snapshot

スナップショットを作成します。スナップショットは名前空間に関連付けられている必要があるため、リクエストに名前空間の名前を含める必要があります。デフォルトでは、Amazon Redshift Serverless はスナップショットを無期限に保持しますが、保持期間を指定することもできます。

RestoreFromSnapshot

restore-from-snapshot

スナップショット内のデータベースを名前空間に復元します。Amazon Redshift サーバーレスからプロビジョニングされたクラスターにスナップショットを復元する場合は、復元するスナップショットの snapshotArn を指定する必要があります。あるいは、サーバーレスからサーバーレスに復元する場合は、snapshotArn または snapshotName を指定できます。ただし、両方は指定できません。

RestoreTableFromSnapshot

restore-table-from-snapshot

テーブルをスナップショットから Amazon Redshift Serverless 名前空間に復元します。インターリーブソートキーを使用するテーブルについては、このオペレーションを使用して復元することはできません。

GetSnapshot

get-snapshot

スナップショットに関する情報を取得します。

ListSnapshots

list-snapshots

複数のスナップショットに関する情報を取得します。

DeleteSnapshot

delete-snapshot

スナップショットを削除します。

RestoreFromRecoveryPoint

restore-from-recovery-point

復旧ポイント内のデータを名前空間に復元します。

RestoreTableFromRecoveryPoint

restore-table-from-recovery-point

復旧ポイントからテーブルを Amazon Redshift Serverless 名前空間に復元します。インターリーブソートキーを使用するテーブルについては、このオペレーションを使用して復元することはできません。

ConvertRecoveryPointToSnapshot

convert-recovery-point-to-snapshot

復旧ポイントをスナップショットに変換します。

GetRecoveryPoint

get-recovery-point

復旧ポイントに関する情報を取得します。

ListRecoveryPoints

list-recovery-points

複数の復旧ポイントに関する情報を取得します。

スナップショット作成のスケジュールを設定するには、次の API オペレーションを使用します。

API オペレーション CLI コマンド 説明

CreateScheduledAction

create-scheduled-action

スケジュールと Amazon Redshift Serverless アクションを含む、スケジュールされたアクションを作成します。例えば、CreateSnapshot API オペレーションを実行する際のスケジュールを作成できます。

DeleteScheduledAction

delete-scheduled-action

スケジュールされたアクションを削除します。

GetScheduledAction

get-scheduled-action

スケジュールされたアクションに関する情報を取得します。

ListScheduledActions

list-scheduled-actions

スケジュールされたアクションのリストに関する情報を取得します。

UpdateScheduledAction

update-scheduled-action

スケジュールされたアクションを更新します。