あるredshiftクラスターから別のredshiftクラスターにテーブルを直接コピーできますか?
テーブルのコピーは、一時ストレージとしてs3を使用して実現できることを知っています(つまり、最初のクラスターからs3にアンロードしてから、s3から別のクラスターにコピーします)。
したがって、答えはノーです。以下は、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プロセスをお勧めします。