web-dev-qa-db-ja.com

あるredshiftクラスターから別のredshiftクラスターへのテーブルのコピー(s3を使用せずに)

あるredshiftクラスターから別のredshiftクラスターにテーブルを直接コピーできますか?

テーブルのコピーは、一時ストレージとしてs3を使用して実現できることを知っています(つまり、最初のクラスターからs3にアンロードしてから、s3から別のクラスターにコピーします)。

11
Prakash

したがって、答えはノーです。以下は、AWSサポートから受け取った返信です。

こんにちは、AWSサポートにお問い合わせいただきありがとうございます。 Amazon RedShiftには、RedShiftクラスター内のテーブルから別のRedShiftクラスター内の別のテーブルにデータを直接コピーするメカニズムがありません。同様の結果を達成するための通常の手順は次のとおりです。

(1)S3にアンロードしてから、S3からコピーします

このアプローチでは、S3を中間ストレージとして使用します。まず、ソースクラスターからS3にデータをアンロードし、次に宛先クラスターのS3からデータをコピーします。これはあなたが精通している方法であり、私たちが推奨する方法でもあります。 RedShiftはS3で動作するように設計されており、これを行う際に比較的低コストで高効率を実現できます。 RedShiftでのUNLOADDおよびCOPY操作の詳細については、次のAWSドキュメントを参照してください。

http://docs.aws.Amazon.com/redshift/latest/dg/t_Unloading_tables.htmlhttp://docs.aws.Amazon.com/redshift/latest/dg/ t_loading-tables-from-s3.html

(2)クラスタースナップショットの使用

別のアプローチは、ソースクラスターのスナップショットを作成してから、スナップショットを宛先クラスターとして復元することです。その後、宛先クラスターから不要なテーブルを削除します。問題は、宛先クラスターでデータのごく一部(たとえば、10個のテーブルの1つ)のみが必要な場合、(比較的)小さなアプリケーションに(比較的)大きなクラスターを使用している可能性があることです。

RedShiftクラスタースナップショットの管理の詳細については、次のAWSドキュメントを参照してください。

http://docs.aws.Amazon.com/redshift/latest/mgmt/managing-snapshots-console.html

要約すると、非常に簡単で費用効果の高いUNLOADおよびCOPYプロセスをお勧めします。

27
Prakash