Amazon RedShiftをAmazon RedShift Serverlessに移行してみた
投稿日: 2022/11/01
はじめに
こんにちは、高橋です。
みなさん、Amazon RedShift Serverlessをご存じでしょうか。こちらのサービスは2022年7月12日に正式リリースされたサービスとなります。
このサービスはその名の通り、Amazon RedShiftが普段はインスタンスを持たず需要に応じてインスタンスを起動/拡張し、Amazon RedShiftの持つ全ての機能を利用できるため、費用と性能を最適に利用することができるサービスとなっています。今回はAmazon RedShift Serverlessに目を付けたお客様からAmazon RedShiftからAmazon RedShift Serverlessへの移行方法についてご質問を頂き、それを試したので、その結果をまとめてみました。
1.Amazon RedShiftとは?
Amazon RedShiftはAWSが提供するデータウェアハウスサービスです。Amazon RedShiftは列指向ストレージ、複数のコンピュータノードを用いた並列処理が可能なアーキテクチャーにより、大量のデータからさまざまなインテリジェンスを高速に抜き出すことが可能なサービスとなっています。

当社のAWSの売り上げ分析のバックエンドでもAmazon RedShiftを活用しており、高速に欲しい情報を抽出することができています。
ただし、これまではサービスを起動する際に、必ずコンピュート数を指定してプロビジョニングをしなければならなかったため、使っていなくても課金が発生し、それを避けたい場合は都度手動で一時停止と再開をしなければなりませんでした(一時停止/再開は最近の機能で、それができる以前はスナップショットを取得して、インスタンスを削除し、必要になったらスナップショットから復旧していました)。これがAmazon RedShift Serverlessに移行することで、余計は課金や運用の手間を掛けずにAmazon RedShiftの機能を利用することができるようになったのです。
Amazon RedShift Serverlessはアクティブなときに消費するコンピューティング性能(RPU)に対して課金されます。Amazon RedShift Serverlessは、ワークロードの需要に合わせて自動的にスケールアップ/ダウンし、未使用時はシャットダウンされるため、性能とコストを最適化することができます。また、RPUはベースラインと最大値を設定することができるため、急な需要増加や誤ったプログラムによって大量のリクエストが発生しても、無制限にスケールアップするわけではないので、想定外のコスト増を防ぐことも可能です。
2.Amazon RedShiftからAmazon RedShift Serverlessへの移行
ここからはAmazon RedShiftからAmazon RedShift Serverlessへ移行方法について見てみたいと思います。
ただし、残念ながら現在(2022年10月7日時点)Amazon RedShiftからAmazon RedShift Serverlessへの移行はコンソールのメニューからワンクリックでできるようになってはいませんでした。

そのため、Amazon RedShiftからAmazon RedShift Serverlessへ移行するためには以下の3つのステップを実行する必要があります。
- ①移行先となるAmazon RedShift Serverlessを作成する
- ②移行元のAmazon RedShiftでスナップショットを作成する
- ③移行先で②で取得したスナップショットからデータをリストアする
では、実際に移行を実施してみたいと思います。
① ルール自動更新
Amazon RedShift Serverlessを作成するには、AWSコンソールのAmazon RedShiftのページで「Amazon RedShift サーバーレス」をクリックします。

最初に「デフォルト設定を使用」か「設定をカスタマイズ」を選択して作成します。

Amazon RedShift Serverlessの作成には以下のものを必須で設定する必要があります。
- 1. 名前空間の名前
- 2. 管理ユーザ名とパスワード
- 3. 関連付けるIAMロール
- 4. (データを暗号化する)暗号化キー
- 5. ワークグループ名
- 6. Amazon RedShiftを展開するVPC/サブネット(3つ以上が必須)/セキュリティグループ
「デフォルト設定を使用」を選んだ場合、関連付けるIAMロール以外、変更することはできません。

それ以外を変更したい場合、「設定をカスタマイズ」を選択する必要がありますので、適宜選択、設定して作成してください。構成を入力して、保存すると数分(今回は3分程度)で作成が完了します。

② 移行元のAmazon RedShiftでスナップショットを作成する
スナップショットの作成はAWSコンソールのAmazon RedShiftのページに戻って、左のメニューから「クラスター」を選択し、移行元のAmazon RedShiftクラスターを選択し、「アクション」→「スナップショットを作成」を選択します。

次の画面で任意の名前と保存期間を選択し、スナップショットの作成をします。

あとは出来上がるのを待ちます(時間は容量によって変動します)。

③ 移行先で②で取得したスナップショットからデータをリストアする
スナップショットから移行先のAmazon RedShift Serverlessにデータをリストアするには、スナップショットのページ(先程のページ)で復元元のスナップショットを選択し、「スナップショットを復元」→「サーバーレス名前空間への復元」を選択します。

次の画面で復元先のAmazon RedShift Serverlessを選択し、復元をクリックすれば、データのリストアが実行されます。

ステータス(状態)がAvailableになれば、移行は完了となります。

最後に移行したAmazon RedShift Serverlessにアクセスして、利用可能な確認をしてみます。なお、移行によってAmazon RedShift自体は別のものになっているため、エンドポイントも変更されています。そのため、実際の運用ではアプリケーション側で接続先を変更する必要があります。エンドポイント名は左のメニューにて「ワークスペースの設定」をクリックし、移行先のワークスペースを選択して開いたページで確認できます。

こちらが実際にAmazon RedShift Serverlessのエンドポイントに接続し、テーブル一覧やテーブルからデータを出力した結果となりますが、問題なく移行されていることが確認できました。

さいごに
今回Amazon RedShiftからAmazon RedShift Serverlessへの移行を行ってみましたが、簡単な手順で(スナップショットの取得/リストア時間を除くと10分とかからず)で実施することができました。もし、現在Amazon RedShiftを利用しているものの、常時利用しているない場合は、Amazon RedShift Serverlessへ移行してみてはいかがでしょうか。
CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。