Amazon Redshift
クラスター管理ガイド (API バージョン 2012-12-01)

Amazon Redshift でのクラスターのサイズ変更

データウェアハウスの容量やパフォーマンスのニーズを変更または拡大する場合、Amazon Redshift の提供するコンピューティングおよびストレージオプションを最大限に利用するためにクラスターのサイズを変更することができます。伸縮自在なサイズ変更を使用して、ノードの数を変更することで、クラスターをスケールすることができます。また、従来のサイズ変更を使用して、異なるノードタイプを指定してクラスターをスケールすることもできます。次のいずれかの方法で、クラスターのサイズを変更できます。

  • 伸縮自在なサイズ変更 – ノードをクラスターにすばやく追加または削除するには、伸縮自在なサイズ変更を使用します。クラスターは短時間、通常、数分間使用できなくなります。Amazon Redshift は、接続を開いたまま維持しようとし、クエリは一時的に停止されます。

  • 従来のサイズ変更 – ノードタイプ、ノードの数、またはその両方を変更するには、従来のサイズ変更を使用します。クラスターは、従来のサイズ変更の間読み取り専用状態にされ、2 時間から 2 日かかることがあります。

  • スナップショット、復元、およびサイズ変更 – クラスターのサイズ変更中にもクラスターを引き続き機能させるには、最初に既存のクラスターのコピーを作成してから、新しいクラスターをサイズ変更します。

伸縮自在なサイズ変更

伸縮自在なサイズ変更は、クラスターのサイズを変更する最速の方法です。伸縮自在なサイズ変更は、既存のクラスターにあるノードを追加または削除し、自動的にデータを新しいノードに再分散します。新しいクラスターを作成しないため、伸縮自在なサイズ変更オペレーションは、素早く (通常は数分以内に) 完了します。バックグラウンドでデータが再分配されているとき、一部のクエリの実行時間がわずかに増加するのに気付くかも知れません。

伸縮自在なサイズ変更オペレーションは、以下のステージで行われます。

  1. 伸縮自在なサイズ変更は、クラスターのスナップショットを作成します。

    伸縮自在なサイズ変更が作成するスナップショットには、バックアップしないテーブルが含まれています。自動スナップショットを無効にしているため、クラスターに最近のスナップショットがない場合、バックアップオペレーションには時間がかかります。サイズ変更オペレーションを開始する前の時間を最小限に抑えるため、自動スナップショットを有効にするか伸縮自在なサイズ変更を開始する前に手動スナップショットを作成することをお勧めします。詳細については、「Amazon Redshift スナップショット」を参照してください。

  2. 伸縮自在なサイズ変更がクラスターメタデータを移行している間、クラスターは一時的に使用できなくなります。

    このステージは非常に短く、長くても数分です。Amazon Redshift がセッション接続を保持し、クエリはキューに登録された状態を維持します。一部のセッションおよびクエリはタイムアウトする可能性があります。

  3. セッション接続が回復し、クエリが再開します。

  4. 伸縮自在なサイズ変更がバックグラウンドでノードスライスにデータを再分配します。

    クラスターは読み取り/書き込みオペレーションに使用できますが、一部のクエリの実行には時間がかかる可能性があります。

Amazon Redshift コンソールを使用して伸縮自在なサイズ変更オペレーションの進捗状況をモニタリングするには、クラスターの詳細ページで、[ステータス] タブを選択します。

伸縮自在なサイズ変更を単一ノードクラスターで使用すること、またはノードタイプを変更することはできません。このような場合は、従来のサイズ変更を使用できます。

伸縮自在なサイズ変更は、テーブルをソートせず、ディスクスペースを回復しないため、バキューム操作に代わるものではありません。従来のサイズ変更はテーブルを新しいクラスターにコピーするので、バキューム処理の必要性を少なくできます。詳細については、テーブルのバキューム処理 を参照してください。

伸縮自在なサイズ変更には以下の制約があります。

  • 伸縮自在なサイズ変更は、EC2 VPC プラットフォームを使用するクラスターにのみ使用できます。詳細については、「クラスターの起動用にサポートされているプラットフォーム」を参照してください。

  • 新しいノード設定では、既存のデータに対して十分なストレージが必要です。ノードを追加するときでも、データが再分配される方法のために、新しい設定に十分なストレージがない場合があります。

  • dc2.large または ds2.xlarge ノードタイプの場合、サイズ変更は 2 倍または 2 分の 1 のみ可能です。たとえば、4 ノードクラスターのサイズ変更は、倍の 8 ノードまたは 2 分の 1 の 2 ノードにできます。

  • dc2.8xlarge または ds2.8xlarge の場合、元のノード数の 2 倍または半分にサイズ変更できます。たとえば、16 ノードクラスターのサイズ変更は、32 ノードまでの任意のサイズに、または 8 ノードまでの任意のサイズにできます。

従来のサイズ変更

従来のサイズ変更オペレーションでは、データはコンピューティングノードまたはソースクラスターのノードから、コンピューティングノードまたはターゲットクラスターのノードに並列コピーされます。これに要する時間は、小さい方のクラスターにあるデータの量とノードの数によって異なります。数時間で終わることもあれば、2~3 日かかる可能性もあります。

サイズ変更オペレーションを開始すると、Amazon Redshift はサイズ変更が完了するまで、既存のクラスターを読み取り専用モードにします。この間、実行できるのはデータベースから読み込むクエリのみで、データベースへの書き込みおよび読み取り/書き込みクエリは実行できません。詳細については、Amazon Redshift Database Developer Guide書き込みおよび読み取り/書き込み操作を参照してください。

注記

本番稼働環境への影響を最小限に抑えてサイズ変更するには、次の スナップショット、リストア、およびサイズ変更 セクションのステップを使用できます。これらのステップを使用して、クラスターのコピーを作成し、コピーのサイズを変更してサイズ変更を完了してから、接続のエンドポイントをサイズ変更したクラスターに切り替えます。

従来のサイズ変更の方法でもスナップショットと復元を使用する方法でも、新しいクラスターにユーザーのテーブルとデータをコピーします。システムテーブルおよびデータは保持されません。従来のサイズ変更またはスナップショットと復元では、ソースクラスターで監査ログを有効にしていた場合、Amazon S3 のログに引き続きアクセスできます。これらの方法では、ソースクラスターを削除した後でも、ログに引き続きアクセスできます。これらのログは、指定したデータポリシーに応じて保持または削除することができます。伸縮自在なサイズ変更では、システムログテーブルが保持されます。

Amazon Redshift によりソースクラスターが読み取り専用モードになった後、ターゲットクラスターである新しいクラスターをプロビジョンします。これは、ノードタイプ、クラスタータイプ、およびノードの数について指定する情報を使用して実行されます。次に Amazon Redshift はソースクラスターからターゲットクラスターにデータをコピーします。これが完了すると、すべての接続がターゲットクラスターを使用するように切り替わります。この切り替え時点で処理中のクエリがある場合、接続が失われるため、ターゲットクラスターでクエリを再起動する必要があります。サイズ変更の進捗は、Amazon Redshift console のクラスターの [ステータス] タブで確認することができます。

Amazon Redshift はサイズ変更オペレーション中にテーブルをソートしないため、既存のソート順序が維持されます。クラスターのサイズを変更すると、Amazon Redshift は分散スタイルに基づいてデータベーステーブルを新しいノードに分散し、ANALYZE コマンドを実行して統計を更新します。削除対象としてマークされた行は転送されないため、テーブルの再ソートが必要な場合のみ VACUUM コマンドを実行する必要があります。詳細については、 Amazon Redshift Database Developer Guide テーブルのバキューム処理を参照してください。

Amazon Redshift コンソールのクラスターリストから [cancel resize (サイズ変更をキャンセル)] を選択して、サイズ変更オペレーションが完了する前にキャンセルできます。サイズ変更のキャンセルに要する時間は、キャンセルするとき、サイズ変更オペレーションのどのステージにあるかによって異なります。クラスターは、サイズ変更のキャンセルオペレーションが完了するまで使用できません。サイズ変更オペレーションが最終ステージになっている場合は、オペレーションをキャンセルできません。

詳細については、「コンソールを使用してクラスターをサイズ変更する」を参照してください。

スナップショット、リストア、およびサイズ変更

前のセクションで説明したとおり、従来のサイズ変更オペレーションを使用したクラスターのサイズ変更にかかる時間は、クラスターのデータ量に大きく左右されます。

伸縮自在なサイズ変更は、Amazon Redshift クラスターのサイズを変更する最速の方法です。伸縮自在なサイズ変更オプションを選択できず、クラスターにほぼ恒常的な書き込みアクセスが必要な場合は、次のセクションで説明している、スナップショットと復元オペレーションを使用します。この方法では、スナップショットが作成された後でソースクラスターに書き込まれたデータは、ターゲットクラスターに切り替えた後、手動でコピーする必要があります。コピーにかかる時間によっては、両方のクラスター内のデータが同じになるまで、この操作を数回繰り返す必要がある場合もあります。その後で、ターゲットクラスターに切り替えられます。このプロセスは、ターゲットクラスターのすべてのデータが使用可能になるまでに、既存のクエリに悪影響を及ぼす可能性があります。ただし、データベースへの書き込みができない時間は最短になります。

スナップショットと復元によるサイズ変更方法には、次のプロセスを使用します。

  1. 既存のクラスターのスナップショットを作成します。既存のクラスターがソースクラスターです。

  2. スナップショットを作成した時刻を記録します。そうすることで、スナップショット後のデータをターゲットデータベースにロードするための抽出、処理、ロード (ETL) プロセスを再実行する必要がある時点を識別できるようにします。

  3. 新しいクラスターにスナップショットを復元します。この新しいクラスターがターゲットクラスターです。サンプルデータがターゲットクラスターにあることを確認します。

  4. ターゲットクラスターのサイズを変更します。ターゲットクラスターに関して、新しいノードタイプ、ノード数、その他の設定を選択します。

  5. ソースクラスターのスナップショット作成後に発生した ETL プロセスでロードされたデータを確認します。ターゲットクラスターには、同じデータを同じ順序で再ロードしてください。進行中のデータロードがある場合、ソースクラスターとターゲットクラスターのデータが同じになるまで、このプロセスを数回繰り返します。

  6. ソースクラスターで実行中のすべてのクエリを停止します。これを行うには、クラスターを再起動するか、スーパーユーザーとしてログオンし、PG_CANCEL_BACKEND および PG_TERMINATE_BACKEND コマンドを使用できます。クラスターを再起動すると、クラスターが使用できないことを最も簡単に確認できます。

  7. ソースクラスター名を変更します。たとえば、examplecluster から examplecluster-source に変更します。

  8. 変更前のソースクラスター名を使用して、ターゲットクラスターの名前を変更します。たとえば、ターゲットクラスターの名前を examplecluster に変更します。これ以降、examplecluster を含むエンドポイントを使用するアプリケーションは、ターゲットクラスターに接続します。

  9. ターゲットクラスターに切り替えた後、ソースクラスターを削除し、すべてのプロセスが期待どおりに動作することを確認します。

または、データをターゲットクラスターに再ロードする前にソースとターゲットクラスターの名前を変更することもできます。このアプローチは、ターゲットクラスター用の依存システムとレポートをすぐに最新状態にする要件がない場合に適しています。この場合、ステップ 6 は前述のプロセスの最後に移動されます。

名前変更プロセスは、アプリケーションが引き続き同じエンドポイントを使用してクラスターに接続する必要がある場合にのみ必要になります。これが必要ない場合は、クラスターの名前を変更せずにそのクラスターに接続するアプリケーションを、ターゲットクラスターのエンドポイントを使用するように更新することもできます。

クラスター名を再利用するのには、いくつかの利点があります。最初に、エンドポイントが変わらないため、基盤となるクラスターを変更しても、アプリケーションの接続文字列を更新する必要がありません。第 2 に、Amazon CloudWatch アラームおよび Amazon Simple Notification Service (Amazon SNS) の通知などの関連項目が、クラスター名に固定されます。これは、クラスターにセットアップした同じアラームと通知を継続して使用することができるということです。この継続的な使用は、アラームや通知などの関連項目を再設定することなく、柔軟にクラスターのサイズを変更できる必要がある本番環境では特に重要です。

コンソールを使用してクラスターをサイズ変更する

伸縮自在なサイズ変更または従来のサイズ変更を使用して、クラスターをサイズ変更できます。サイズ変更のタイプの詳細については、Amazon Redshift でのクラスターのサイズ変更 を参照してください。

コンソールを使用してクラスターのサイズを変更するには:

  1. Amazon Redshift consoleを開きます。

  2. ナビゲーションペインで、[クラスター] を選択して、サイズ変更するクラスターを選択します。

  3. [クラスター]、[サイズ変更] の順に選択します。

  4. [Type of resize (サイズ変更のタイプ)] で、以下のいずれかの値を選択します。

    • 伸縮自在なサイズ変更

      クラスターが伸縮自在なサイズ変更をサポートしない場合、[伸縮自在なサイズ変更] は利用できません。

    • [従来のサイズ変更]

  5. [ノードの数] では、新しいノード数を選択します。伸縮自在なサイズ変更では、有効なノードの数のみ使用できます。

  6. [サイズ変更] を選択します。

  7. サイズ変更の進捗を確認するには、[クラスターステータス] をモニタリングします。

CLI と API を使用してクラスターをサイズ変更する

CLI を使用してクラスターのサイズを変更するには、resize-cluster コマンドを実行します。

API を使用してクラスターをサイズ変更するには、ResizeCluster アクションを使用します。