LoginSignup
0
0

More than 5 years have passed since last update.

Amazon RedshiftからAzure SQL DataWarehouseへデータをコピーする

Last updated at Posted at 2018-10-25

公式ドキュメント はありますが、AWS側の設定なども含めて細かくやり方を残しておきます。

事前準備

Azure SQL DataWarehouse準備

Amazon Redshift準備

SELECT * FROM pg_table_def WHERE tablename = '[テーブル名]'

Redshiftと同じ構造のテーブルをSQL DWに作る

Azure Data Factoryを準備する

  • Azure Data Factoryを作成します。執筆時点ではまだ日本リージョンにはないので、今回は米国東部リージョンに作ります。
    image.png

  • 作ったらData Factoryポータルにいきます
    image.png

  • こんな感じで表示されたらOKです
    image.png

Redshiftのセキュリティグループ編集

Redshiftにアクセスするので、RedshiftのセキュリティグループでAzureからの接続を許可しないといけません。
5439ポートを0.0.0.0/0、つまり全空けだと当然うまくいきますが、それだとなんかイヤなのである程度アクセス元を絞りたいと思います。

Redshiftにアクセスするのは、最初に接続してテーブル構造とかを持ってくるのが「Data Factory」、実際にデータコピーするのが「SQL DataWarehouse」になります。
Data FactoryとSQL DWの接続元IPアドレスは特定することができないので、最もアクセス元を絞れるのは、リージョンで払い出させれる可能性のあるIPアドレスレンジということになります。
Data Factoryは「米国東部リージョン」、SQL DWは「東日本リージョン」に作っているので、両方のリージョンからのアクセスを許可してあげる必要があります。

  • 以下ダウンロードサイトより、米国東部リージョンと東日本リージョンのIPRangeを取得します。
    Azure Datacenter IP Ranges

  • かなりの量なので、AWS CLIでセキュリティグループの設定を追加していきます。1セキュリティグループ当たり、60ルールが上限なので、そのへんはセキュリティグループを複数作って対応していきます。

for ip in `cat iprange.txt`; do aws ec2 authorize-security-group-ingress --group-id [Security Group ID] --protocol tcp --port 5439 --cidr $ip; done

Redshift to SQLDWデータコピー

  • Data Factoryページから、[Copy Data]を選択します。
    image.png

  • Task nameを入力します。実行は今回1度きりの実行にするので、[Run once now]をチェックします。
    image.png

  • まずはコピー元の選択からです。[Create new connection]ボタンを選択します
    image.png

  • 一覧が表示されるので[Amazon Redshift]を選択します。
    image.png

  • エンドポイント、データベース名、ユーザ名、パスワードなど、Redshiftの各種情報を入力していきます。
    image.png

  • 入力完了した時点でRedshiftに接続しにいくので、セキュリティグループの設定が間違っていたらここでエラーになります。

  • 次にコピーしたい対象テーブルを選択します。全てでもよいです。
    image.png

  • コピー先の選択です。[Create new connection]ボタンを選択します
    image.png

  • [Azure SQL Data Warehouse]を選択します
    image.png

  • 手動でエンドポイントを入力することもできますが、サブスクリプションから対象データベースを選択することができます。
    image.png

  • コピー先のテーブルを選択してマッピングさせます。SQL DW側に事前にテーブルを作っておく必要があります。
    image.png

  • コピーしたいカラムを選択します。デフォルトだと全てのカラムをコピーすることになるのでそのままいきます。
    image.png

  • 設定画面では、RedshiftからS3にアンロードして、BlobにコピーしてBlobからSQL DWにロードしたりできます。

    • 大量データだとそっちのほうが早いのかな。試したけど時間特に変わりませんでした。。
  • とりあえず今回はS3/Blobは使わないで直接コピーしてみます。全てのチェックを外してください。
    image.png

  • サマリーが出るので問題なければ実行しましょう。
    image.png

  • デプロイが走ります。[Monitor]を選択します。
    image.png

  • タスクが実行されていることが分かります。実行結果を確認してみます。
    image.png

  • [Details]ボタンを選択します。
    image.png

  • 転送時間やスループットを確認することができます。今回は、172,456レコード、11MBのデータを27秒でコピーしたことが分かります。
    image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0