メニュー
Amazon Redshift
管理ガイド (API Version 2012年12月1日)

チュートリアル: スナップショット、復元、サイズ変更オペレーションを使用したクラスターのサイズ変更

このセクションでは、Amazon Redshift クラスターのサイズ変更プロセスの一環として、スナップショットおよび復元操作を使用するプロセスについて順を追って説明します。このプロセスは、クラスターのサイズ変更を行っている間も、データベースの書き込みおよび読み取り/書き込み操作を停止できない、または停止したくない環境には特に有効な、高度なプロセスです。クラスターのサイズ変更にかかる時間が不明な場合は、この手順を使用してスナップショットを作成し、それを新しいクラスターに復元してから、サイズを変更して見積りを取得します。このセクションでは、そのプロセスをさらに進めて、ターゲットクラスターのサイズ変更完了後にソースクラスターからターゲットクラスターに切り替えます。

重要

クラスターは、削除されるまで課金されます。

このチュートリアルを完了するには、次の手順を実行します。

前提条件

このチュートリアルを開始する前に、以下の前提条件を満たしていることを確認します。

  • サンプルクラスター。この例では、最初に Amazon Redshift 入門ガイド の演習で作成したサンプルクラスターを使用します。このチュートリアルで使用するサンプルクラスターがない場合は、Getting Started の演習を完了させてサンプルを作成してから、このチュートリアルに戻ってください。

  • クラスターに接続する SQL クライアントツールまたはアプリケーション。このチュートリアルでは SQL Workbench/J を使用します。これは、Amazon Redshift 入門ガイド の演習を実行していれば、インストールされています。SQL Workbench/J または別の SQL クライアントツールがない場合は、「SQL Workbench/J を使用するクラスターに接続する」を参照してください。

  • サンプルデータ。このチュートリアルでは、クラスターのスナップショットを作成してから、ソースクラスターと、スナップショットの復元先の新しいクラスター間にデータの違いが生じるように、データベースにいくつかの書き込みクエリを実行します。このチュートリアルを開始する前に、Amazon Redshift 入門ガイド の演習の説明に従って、Amazon S3 のサンプルデータをクラスターにロードします。

ステップ 1: スナップショットを作成する

  1. Amazon Redshift consoleを開きます。

  2. ナビゲーションペインで、[Clusters] をクリックし、開くクラスターをクリックします。Amazon Redshift 入門ガイド の演習で作成したクラスターを使用する場合は、[examplecluster] をクリックします。

  3. クラスターの詳細ページの [Configuration] タブで、パックアップリストの [Take Snapshot] をクリックします。

  4. [Create Snapshot] ウィンドウで、[Snapshot Identifier] ボックスに「examplecluster-source」と入力して、[Create] をクリックします。

  5. ナビゲーションペインで、[Snapshots] をクリックして、新しい手動スナップショットが作成されていることを確認します。スナップショットのステータスは creating になります。

ステップ 2: ターゲットクラスターにスナップショットを復元する

  1. ナビゲーションペインで、[Snapshots] をクリックして、examplecluster-source スナップショットを選択します。

  2. [Restore From Snapshot] をクリックします。

  3. [Choose Platform] ウィンドウで、クラスターを復元するプラットフォームを選択します。使用しているアカウントとリージョンで引き続き EC2-Classic プラットフォームをサポートする場合は、[EC2-Classic] を選択します。それ以外の場合、[EC2-VPC] を選択します。次に、[Continue] をクリックします。

    注記

    EC2-VPC を選択した場合は、クラスターサブネットグループが必要です。詳細については、「クラスターサブネットグループの作成」を参照してください。

  4. [Restore Cluster From Snapshot] ウィンドウで、以下の操作を行います。

    • Snapshot Identifier: スナップショットの名前、[examplecluster-source] をオンにします。

    • Cluster Identifier: 「examplecluster-target」と入力します。

    • Port: 表示されたポート番号をそのまま使用します。

    • Allow Version Upgrade: このオプションは [Yes] のままにします。

    • Availability Zone: アベイラビリティゾーンを選択します。

    • Cluster Parameter Group: 使用するパラメータグループを選択します。

    • Cluster Security Group: 使用するセキュリティグループを選択します。

  5. ナビゲーションペインで [Clusters] をクリックします。新しいクラスター、examplecluster-target は、ソースクラスターのスナップショットから作成されます。

    最初に、ターゲットクラスターが作成されます。[Cluster Status] の値は、この時点で creating, restoring になります。

    ターゲットクラスターが作成されると、[Cluster Status] の値が available, restoring に変わります。

  6. examplecluster-target をクリックして開きます。[Cluster Status] の値が available という表示に変わり、[Restore Status] に completed と表示されることを確認します。

ステップ 3: ターゲットクラスターのデータを確認する

復元操作が完了したら、ターゲットクラスターのデータが、ソースのスナップショットに存在していると予想していたデータと一致していることを確認できます。SQL クライアントツールを使用してターゲットクラスターに接続し、クエリを実行して新しいクラスターのデータを検証することができます。たとえば、Amazon Redshift 入門ガイド の演習で実行したのと同じクエリを実行できます。

Copy
-- Get definition for the sales table. SELECT * FROM pg_table_def WHERE tablename = 'sales'; -- Find total sales on a given calendar date. SELECT sum(qtysold) FROM sales, date WHERE sales.dateid = date.dateid AND caldate = '2008-01-05'; -- Find top 10 buyers by quantity. SELECT firstname, lastname, total_quantity FROM (SELECT buyerid, sum(qtysold) total_quantity FROM sales GROUP BY buyerid ORDER BY total_quantity desc limit 10) Q, users WHERE Q.buyerid = userid ORDER BY Q.total_quantity desc; -- Find events in the 99.9 percentile in terms of all-time gross sales. SELECT eventname, total_price FROM (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) as percentile FROM (SELECT eventid, sum(pricepaid) total_price FROM sales GROUP BY eventid)) Q, event E WHERE Q.eventid = E.eventid AND percentile = 1 ORDER BY total_price desc;

ステップ 4: ターゲットクラスターのサイズを変更する

ターゲットクラスターが期待どおりに動作することを確認できたら、ターゲットクラスターのサイズを変更できます。このチュートリアルの後の手順で、スナップショット作成後にロードされたデータをターゲットにコピーすることがあるため、ソースクラスターでの書き込みおよび読み取り/書き込み操作を引き続き可能にしておくことができます。

  1. Amazon Redshift consoleを開きます。

  2. ナビゲーションペインで、[Clusters] をクリックし、開くクラスターをクリックします。このチュートリアルと同じクラスターを使用している場合は、examplecluster-target をクリックします。

  3. クラスターの詳細ページの [Configuration] タブで、クラスターリストの [Resize] をクリックします。

  4. [Resize Cluster] ウィンドウで、次の値を選択します。

    • [Node Type]: dc1.large

    • [Cluster Type]: Multi Node

    • [Number of Nodes]: 2

  5. [Resize] をクリックします。

  6. [Status] をクリックし、サイズ変更のステータス情報を確認すると、サイズ変更の進行状況がわかります。

ステップ 5: スナップショット後のデータをソースからターゲットクラスターにコピーする

このチュートリアルでは、このステップでシンプルな COPY ステートメントセットを使用して、Amazon S3 から Amazon Redshift にデータをロードします。このステップは、ソースクラスターと同じデータを使用して、ターゲットクラスターを最新の状態にする操作をシミュレートするために組み込まれています。ソースクラスターとターゲットクラスターに、実際の本番環境を合わせる作業について説明することが目的ではありません。本番環境では、スナップショット作成後のソースクラスターとまったく同じデータをどのようにターゲットクラスターにロードするかは、独自の ETL プロセスで決まります。

スナップショット作成後に複数回ロードされていた場合は、ソースデータベースで実行されたのと同じ順序で、ターゲットデータベースでロードが再実行されることを確認する必要があります。さらに、ターゲットクラスターの更新作業を行っている間も、ソースデータベースへのロードが継続されている場合、ターゲットとソースが一致するまでこのプロセスを繰り返し、クラスターの名前変更とアプリケーションの接続をターゲットデータベースに切り替える適切なタイミングを見極める必要があります。

この例では、スナップショット作成後に、ETL プロセスでソースクラスターにデータがロードされたと想定します。Amazon Redshift がスナップショットからのクラスター復元またはターゲットクラスターのサイズ変更を継続している可能性があります。TICKIT データベースにいくつかの新しいカテゴリ、イベント、日付、および会場が追加されています。そこで、使用するクラスターを切り替える前に、これと同じデータをターゲットクラスターに取り込む必要があります。

まず最初に、次の COPY ステートメントを使用して、Amazon S3 からターゲットクラスターの Amazon Redshift TICKIT データベースのテーブルに新しいデータをロードします。

このチュートリアルのサンプルデータがあるのは、Amazon Redshift が所有する Amazon S3 バケット内です。このバケットの権限は、すべての認証された AWS ユーザーにサンプルデータファイルへの読み込みアクセスを許可する設定になっています。サンプルデータをロードするには、IAM ユーザーに関する次のアクセスキーとアクセス許可があることを確認してください。

  • 自分のアクセスキーとシークレットアクセスキー。これらが不明な場合は、新しいキーを作成できます。詳細については、IAM ユーザーガイド の「IAM ユーザーのアクセスキーの管理」を参照してください。

  • 少なくとも Amazon S3 リソースへの LIST および GET アクセス許可。IAM ユーザーまたは IAM ユーザーが属するグループに AmazonS3ReadOnlyAccess 管理ポリシーをアタッチして、IAM ユーザーにこれらのアクセス許可を付与できます。ポリシーのアタッチの詳細については、IAM ユーザーガイド の「管理ポリシーの使用」を参照してください。

    注記

    Amazon S3 への適切なアクセス許可なしに COPY コマンドを実行すると、"S3ServiceException: Access Denied" というエラーメッセージが表示されます。

<access-key-id><secret-access-key> を、IAM ユーザーのアクセスキーおよびシークレットアクセスキーと置き換えます。次に、SQL クライアントツールでコマンドを実行します。

Copy
copy venue from 's3://awssampledb/resize/etl_venue_pipe.txt' CREDENTIALS 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' delimiter '|' region 'us-east-1'; copy category from 's3://awssampledb/resize/etl_category_pipe.txt' CREDENTIALS 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' delimiter '|' region 'us-east-1'; copy date from 's3://awssampledb/resize/etl_date_pipe.txt' CREDENTIALS 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' delimiter '|' region 'us-east-1'; copy event from 's3://awssampledb/resize/etl_events_pipe.txt' CREDENTIALS 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS' region 'us-east-1';

ステップ 6: ソースとターゲットクラスターの名前を変更する

ターゲットクラスターが ETL プロセスから必要なデータを使用して最新の状態になったことを確認したら、ターゲットクラスターに切り替えることができます。ソースクラスターと同じ名前を維持する必要がある場合は、切り替えのために多少の手動ステップが必要になります。手動ステップでは、ソースとターゲットクラスターの名前変更も行い、その間の短期間はそれらが使用できなくなります。ただし、新しいクラスターを使用するようにデータソースを更新できる場合は、このセクションをスキップできます。

  1. Amazon Redshift consoleを開きます。

  2. ナビゲーションペインで、[Clusters] をクリックし、開くクラスターをクリックします。このチュートリアルと同じクラスターを使用している場合は、examplecluster をクリックします。

  3. クラスターの詳細ページの [Configuration] タブで、クラスターリストの [Modify] をクリックします。

  4. [Modify Cluster] ウィンドウで、[New Cluster Identifier] ボックスに「examplecluster-source」と入力し、[Modify] をクリックします。

  5. ナビゲーションペインで、[Clusters] をクリックし、examplecluster-target を選択します。

  6. クラスターの詳細ページの [Configuration] タブで、クラスターリストの [Modify] をクリックします。

  7. [Modify Cluster] ウィンドウで、[New Cluster Identifier] ボックスに「examplecluster」と入力し、[Modify] をクリックします。

ソースクラスターで実行中のクエリがある場合、ターゲットクラスターでそれを最初から実行し、完了する必要があります。

ステップ 7: ソースクラスターを削除する

この後ソースクラスターは必要ないと確信できた場合は、削除できます。本番環境では、データポリシーに従って、最終スナップショットを保持するかどうかを判断します。このチュートリアルでは、サンプルデータを使用しているため、最終スナップショットを作成せずにクラスターを削除します。

重要

クラスターは、削除されるまで課金されます。

  1. Amazon Redshift consoleを開きます。

  2. ナビゲーションペインで、[Clusters] をクリックし、開くクラスターをクリックします。このチュートリアルと同じクラスター名を使用している場合は、examplecluster-source をクリックします。

  3. クラスターの詳細ページの [Configuration] タブで、クラスターリストの [Delete] をクリックします。

  4. [Delete Cluster] ウィンドウで、[Create final snapshot] に [No] を指定して、[Delete] をクリックします。

ステップ 8: 環境をクリーンアップする

このチュートリアルを完了したら、ターゲットクラスターを削除して、環境をクリーンアップできます。これを行うには、「ステップ 7: ソースクラスターを削除する」の手順に従い、代わりにターゲットクラスターを削除します。これを行うと、環境はチュートリアルを開始する前の状態に戻ります。環境を元の状態に戻すことは、クラスターの実行に伴うコストを削減するために重要です。

重要

クラスターは、削除されるまで課金されます。