Amazon Redshift スナップショットとバックアップ
スナップショットはクラスターのポイントインタイムバックアップです。スナップショットには、自動と手動の 2 つのタイプがあります。Amazon Redshift は、暗号化された Secure Sockets Layer (SSL) 接続を使用して、これらのスナップショットを Amazon S3 の内部に保存できます。
Amazon Redshift は、前回のスナップショット以降にクラスターに加えられた増分変更を追跡する、増分スナップショットを自動的に作成します。自動スナップショットは、スナップショットからクラスターを復元するために必要なすべてのデータを保持します。自動スナップショットをいつ作成するかを制御するためにスナップショットスケジュールを作成できます。また、いつでも手動スナップショットを作成することもできます。
スナップショットから復元すると、Amazon Redshift は新しいクラスターを作成し、すべてのデータをロードする前に新しいクラスターを使用できるようにするので、すぐに新しいクラスターのクエリを開始できます。クラスターは、アクティブなクエリに応じてスナップショットからデータをオンデマンドでストリーミングし、次に残りのデータをバックグラウンドでロードします。
クラスターを起動するとき、自動スナップショットと手動スナップショットの保持期間を設定できます。クラスターを変更して、自動スナップショットと手動スナップショットの保持期間を変更できます。スナップショットを作成するか、スナップショットを変更して、手動スナップショット保持期間を変更できます。
AWS Management Console でスナップショットの詳細を表示するか、CLI または DescribeClusterSnapshots API アクションで describe-cluster-snapshots を呼び出して、スナップショットの進行状況をモニタリングできます。これにより、進行中のスナップショットについて、差分スナップショットのサイズ、転送速度、経過時間、および推定残り時間などの情報が表示されます。
バックアップを常にクラスターで使用できるようにするために、Amazon Redshift は、Amazon Redshift の管理対象の内部管理 Amazon S3 バケットにスナップショットを保存します。ストレージの料金を管理するには、自動スナップショットを保持する必要がある日数を評価し、それに応じて保持期間を設定します。不要になった手動スナップショットを削除します。バックアップストレージのコストに関する詳細については、Amazon Redshift の料金表
Amazon Redshift Serverless でのスナップショットとバックアップの操作
プロビジョニングされたクラスターと同様に、Amazon Redshift Serverless では、名前空間内のポイントインタイムのオブジェクトとデータとしてバックアップを行うことができます。Amazon Redshift Serverless のバックアップには、手動で作成するスナップショットと、Amazon Redshift Serverless が自動的に作成する復旧ポイントの 2 種類があります。Amazon Redshift Serverless のスナップショットの操作の詳細については、「スナップショットと復旧ポイント」を参照してください。
プロビジョニングされたクラスターからサーバーレス名前空間にスナップショットを復元することもできます。詳細については、「スナップショットからサーバーレス名前空間の復元」を参照してください。
自動スナップショット
自動スナップショットがクラスターに対して有効になると、Amazon Redshift は定期的にそのクラスターのスナップショットが作成されます。デフォルトでは、Amazon Redshift は約 8 時間ごと、または 1 ノードのデータが変更されるごとに 5 GB ごと (あるいはそのいずれか早い方) にスナップショットを作成します。データがノード数の 5 GB * を超える場合、自動スナップショット作成間の最短時間は 15 分です。または、自動スナップショットを作成するタイミングを制御するためにスナップショットスケジュールを作成することができます。カスタムスケジュールを使用している場合は、自動スナップショット間の最小時間は 1 時間です。自動スナップショットは、クラスターを作成するときデフォルトで有効になります。
自動スナップショットは、保持期間の終了時に削除されます。デフォルトの保持期間は 1 日ですが、Amazon Redshift コンソールを使用するか、Amazon Redshift API または CLI を使用してプログラムにより変更できます。
自動スナップショットを無効にするには、保持期間を 0 に設定します。自動スナップショットを無効にした場合、Amazon Redshift はスナップショットの取得を停止し、クラスターの既存の自動スナップショットを削除します。RA3 ノードタイプでは、自動スナップショットを無効にすることはできません。RA3 ノードタイプの自動保存期間を 1~35 日に設定できます。
自動スナップショットを削除できるのは Amazon Redshift のみです。手動で削除することはできません。Amazon Redshift では、スナップショットの保存期間終了時、クラスターの自動スナップショットを無効にした場合、またはクラスターを削除した場合に、自動スナップショットが削除されます。Amazon Redshift は、自動スナップショットを無効にするか、クラスターを削除するまで、最新の自動スナップショットを保持します。
自動スナップショットをもっと長い期間保持する場合は、そのコピーを手動スナップショットとして作成します。自動スナップショットは、保持期間が終わるまで保持されますが、対応する手動スナップショットは手動で削除するまで、または保持期間が終わるまで保持されます。
自動スナップショットのスケジュール
スナップショットを作成するタイミングを正確に制御するために、スナップショットスケジュールを作成し、それを 1 つ以上のクラスターにアタッチすることができます。スナップショットスケジュールを変更すると、関連付けられているすべてのクラスターのスケジュールが変更されます。クラスターにスナップショットスケジュールがアタッチされていない場合、クラスターはデフォルトの自動スナップショットスケジュールを使用します。
スナップショットスケジュール は、一連のスケジュールルールです。指定した間隔 (8 時間ごと、12 時間ごとなど) に基づいてシンプルなスケジュールルールを定義できます。特定の曜日、特定の時間、特定の期間にスナップショットを作成するためのルールを追加することもできます。ルールは Unix 互換の cron 式を使って定義することもできます。
スナップショットスケジュール形式
Amazon Redshift コンソールで、スナップショットスケジュールを作成できます。その後、スケジュールをクラスターにアタッチしてシステムスナップショットの作成をトリガーできます。スケジュールは複数のクラスターにアタッチでき、スナップショットをトリガーするためにスケジュール内に複数の cron 定義を作成できます。
cron 構文を使用してスナップショットのスケジュールを定義できます。これらのスケジュールの定義は、変更された Unix 互換の cron
Amazon Redshift の変更された cron 式には 3 つの必須フィールドがあり、それらは空白で区切られます。
[Syntax] (構文)
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 時間ごとの増分のスケジュールに従って実行するとします。これにより [15:15、17:15、19:15、21:15、23:15] となりますが、次のように指定します。
cron(15 15/2 *)
スケジュールとして複数の cron スケジュール定義を作成できます。たとえば、次の AWS CLI コマンドでは、1 つのスケジュールに 2 つの cron スケジュールが含まれています。
create-snapshot-schedule --schedule-identifier "my-test" --schedule-definition "cron(0 17 SAT,SUN)" "cron(0 9,17 MON-FRI)"
手動スナップショット
手動スナップショットはいつでも取得できます。デフォルトでは、手動スナップショットは、クラスターを削除した後も、無限に保持されます。手動スナップショットを作成するときに保持期間を指定できます。スナップショットを変更して保持期間を変更することもできます。ログ保持期間の変更の詳細については、「手動スナップショットの保持期間を変更する」を参照してください。
スナップショットを削除した場合、そのスナップショットを参照する新しいオペレーションを開始することはできません。ただし、復元操作が進行中である場合、その復元操作は完了するまで実行されます。
Amazon Redshift には、作成できる手動スナップショットの合計数を制限するクォータがあります。このクォータは AWS アカウントごと、AWS リージョンごとにあります。デフォルトのクォータは Amazon Redshift でのクォータと制限 に一覧表示されています。
スナップショットストレージ
手動スナップショットにはストレージ料金が発生するので、スナップショットが不要になった場合は削除することが重要です。Amazon Redshift は、それぞれのスナップショット保持期間の終了時に自動スナップショットおよび手動スナップショットを削除します。また、AWS Management Console または batch-delete-cluster-snapshots CLI コマンドを使用して、手動スナップショットを削除できます。
手動スナップショット設定を変更して、手動スナップショット保持期間を変更できます。
Amazon Redshift コンソールまたは CLI コマンド describe-storage を使用すると、スナップショットが使用しているストレージ容量に関する情報を取得できます。
スナップショットのテーブルを除く
デフォルトでは、スナップショットにすべてのユーザー定義の永続テーブルが含まれます。ステージングテーブルなど、テーブルをバックアップする必要のない場合は、スナップショットの作成やスナップショットからの復元にかかる時間を大幅に短縮できます。さらに、バックアップしないテーブルを使用して、Amazon S3 のストレージ領域を節約することができます。バックアップしないテーブルを作成するには、テーブルの作成時に BACKUP NO のパラメータを含めてください。詳細については、Amazon Redshift データベースデベロッパーガイドの CREATE TABLE および CREATE TABLE AS を参照してください。