Amazon Redshift からのデータ移行

概要

このドキュメントでは、パブリック IP を介して Amazon Redshift から BigQuery にデータを移行するプロセスについて説明します。

Redshift インスタンスから Virtual Private Cloud(VPC)を介してプライベート IP アドレスでデータを転送する場合は、VPC による Amazon Redshift データの移行をご覧ください。

BigQuery Data Transfer Service を使用すると、Amazon Redshift データ ウェアハウスから BigQuery にデータをコピーできます。このサービスでは、GKE の移行エージェントとの連携によって、Amazon Redshift から Amazon S3 バケットのステージング領域への unload オペレーションがトリガーされます。その後、BigQuery Data Transfer Service によって Amazon S3 バケットから BigQuery にデータが転送されます。

次の図は、Amazon Redshift データ ウェアハウスと BigQuery の間で移行するデータの全体的な流れを示しています。

始める前に

このセクションでは、Amazon Redshift から BigQuery へのデータ移行を設定するプロセスをステップごとに説明します。ステップは次のとおりです。

  • Google Cloud の要件: Google Cloud の前提条件を満たし、権限を設定する。
  • Amazon Redshift クラスタへのアクセスを許可する。
  • データの一時的なステージングに使用する Amazon S3 バケットへのアクセスを許可する。後のステップで使用するために、アクセスキーのペアを書き留める。
  • BigQuery Data Transfer Service を使用して移行をセットアップする。以下の情報が必要になります。
    • Amazon Redshift JDBC の URL。こちらの JDBC の URL を取得する手順を使用します。
    • Amazon Redshift データベースのユーザー名とパスワード。
    • AWS アクセスキー ペア。このペアは S3 バケットへのアクセスを許可するステップで取得します。
    • Amazon S3 バケットの URI。このバケットにライフサイクル ポリシーを設定して、不要な課金が発生しないようにすることをおすすめします。すべてのデータを BigQuery に転送するのに十分な時間を確保するため、推奨される有効期限は 24 時間です。

必要な権限

Amazon Redshift 転送を作成する前に:

  1. 転送を作成するユーザーに、BigQuery で必要な次の権限が付与されていることを確認します。

    • bigquery.transfers.update(転送を作成する権限)
    • bigquery.datasets.update(抽出先データセットに対する権限)

    bigquery.transfers.update 権限と bigquery.datasets.update 権限は IAM 事前定義ロール bigquery.admin に含まれています。BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

  2. 転送を有効にするために必要な権限が構成されたことを確認するには、Amazon S3 のドキュメントをご覧ください。少なくとも、Amazon S3 ソースデータには AWS 管理ポリシー AmazonS3ReadOnlyAccess が適用されている必要があります。

Google Cloud の要件

Amazon Redshift データ ウェアハウスの移行を確実に成功させるには、Google Cloud で次の前提条件を満たす必要があります。

  1. 移行データを保存するための Google Cloud プロジェクトを選択するか、作成します。

    • Google Cloud Console で [プロジェクトの選択] ページに移動します。

      [プロジェクトの選択] ページに移動

    • Google Cloud プロジェクトを選択または作成します。

  2. BigQuery Data Transfer Service API を有効にします。

    Google Cloud Console の BigQuery Data Transfer Service API ページで、[有効にする] ボタンをクリックします。

    API を有効にする

    新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトの場合は、BigQuery API の有効化が必要になる場合もあります。緑色のチェックマークは、API がすでに有効にされていることを示します。

    有効な API

  3. データを保存する BigQuery データセットを作成します。テーブルを作成する必要はありません。

Amazon Redshift クラスタへのアクセスを許可する

Amazon の指示に沿って、次の IP アドレスを許可リストに登録します。データセットのロケーションに対応する IP アドレスを許可リストに登録することも、下の表のすべての IP アドレスを許可リストに登録することもできます。Google 所有のこれらの IP アドレスは、Amazon Redshift のデータ移行用に予約されています。

リージョンのロケーション

リージョンの説明 リージョン名 IP アドレス
南北アメリカ
ラスベガス us-west4 34.125.53.201
34.125.69.174
34.125.159.85
34.125.152.1
34.125.195.166
34.125.50.249
34.125.68.55
34.125.91.116
ロサンゼルス us-west2 35.236.59.167
34.94.132.139
34.94.207.21
34.94.81.187
34.94.88.122
35.235.101.187
34.94.238.66
34.94.195.77
モントリオール northamerica-northeast1 34.95.20.253
35.203.31.219
34.95.22.233
34.95.27.99
35.203.12.23
35.203.39.46
35.203.116.49
35.203.104.223
北バージニア us-east4 35.245.95.250
35.245.126.228
35.236.225.172
35.245.86.140
35.199.31.35
35.199.19.115
35.230.167.48
35.245.128.132
35.245.111.126
35.236.209.21
オレゴン us-west1 35.197.117.207
35.197.117.207
35.197.86.233
34.82.155.140
35.247.28.48
35.247.31.246
35.247.106.13
34.105.85.54
ソルトレイクシティ us-west3 34.106.37.58
34.106.85.113
34.106.28.153
34.106.64.121
34.106.246.131
34.106.56.150
34.106.41.31
34.106.182.92
サンパウロ southamerica-east1 35.199.88.228
34.95.169.140
35.198.53.30
34.95.144.215
35.247.250.120
35.247.255.158
34.95.231.121
35.198.8.157
サウスカロライナ us-east1 35.196.207.183
35.237.231.98
104.196.102.222
35.231.13.201
34.75.129.215
34.75.127.9
35.229.36.137
35.237.91.139
ヨーロッパ
ベルギー europe-west1 35.240.36.149
35.205.171.56
34.76.234.4
35.205.38.234
34.77.237.73
35.195.107.238
35.195.52.87
34.76.102.189
フィンランド europe-north1 35.228.35.94
35.228.183.156
35.228.211.18
35.228.146.84
35.228.103.114
35.228.53.184
35.228.203.85
35.228.183.138
フランクフルト europe-west3 35.246.153.144
35.198.80.78
35.246.181.106
35.246.211.135
34.89.165.108
35.198.68.187
35.242.223.6
34.89.137.180
ロンドン europe-west2 35.189.119.113
35.189.101.107
35.189.69.131
35.197.205.93
35.189.121.178
35.189.121.41
35.189.85.30
35.197.195.192
オランダ europe-west4 35.204.237.173
35.204.18.163
34.91.86.224
34.90.184.136
34.91.115.67
34.90.218.6
34.91.147.143
34.91.253.1
チューリッヒ europe-west6 34.65.205.160
34.65.121.140
34.65.196.143
34.65.9.133
34.65.156.193
34.65.216.124
34.65.233.83
34.65.168.250
アジア太平洋
香港 asia-east2 34.92.245.180
35.241.116.105
35.220.240.216
35.220.188.244
34.92.196.78
34.92.165.209
35.220.193.228
34.96.153.178
ジャカルタ asia-southeast2 34.101.79.105
34.101.129.32
34.101.244.197
34.101.100.180
34.101.109.205
34.101.185.189
34.101.179.27
34.101.197.251
ムンバイ asia-south1 34.93.67.112
35.244.0.1
35.200.245.13
35.200.203.161
34.93.209.130
34.93.120.224
35.244.10.12
35.200.186.100
大阪 asia-northeast2 34.97.94.51
34.97.118.176
34.97.63.76
34.97.159.156
34.97.113.218
34.97.4.108
34.97.119.140
34.97.30.191
ソウル asia-northeast3 34.64.152.215
34.64.140.241
34.64.133.199
34.64.174.192
34.64.145.219
34.64.136.56
34.64.247.158
34.64.135.220
シンガポール asia-southeast1 34.87.12.235
34.87.63.5
34.87.91.51
35.198.197.191
35.240.253.175
35.247.165.193
35.247.181.82
35.247.189.103
シドニー australia-southeast1 35.189.33.150
35.189.38.5
35.189.29.88
35.189.22.179
35.189.20.163
35.189.29.83
35.189.31.141
35.189.14.219
台湾 asia-east1 35.221.201.20
35.194.177.253
34.80.17.79
34.80.178.20
34.80.174.198
35.201.132.11
35.201.223.177
35.229.251.28
35.185.155.147
35.194.232.172
東京 asia-northeast1 34.85.11.246
34.85.30.58
34.85.8.125
34.85.38.59
34.85.31.67
34.85.36.143
34.85.32.222
34.85.18.128
34.85.23.202
34.85.35.192

マルチリージョンのロケーション

マルチリージョンの説明 マルチリージョン名 IP アドレス
欧州連合の加盟国内のデータセンター1 EU 34.76.156.158
34.76.156.172
34.76.136.146
34.76.1.29
34.76.156.232
34.76.156.81
34.76.156.246
34.76.102.206
34.76.129.246
34.76.121.168
米国内のデータセンター US 35.185.196.212
35.197.102.120
35.185.224.10
35.185.228.170
35.197.5.235
35.185.206.139
35.197.67.234
35.197.38.65
35.185.202.229
35.185.200.120

1 EU マルチリージョン内のデータは europe-west2(ロンドン)や europe-west6(チューリッヒ)のデータセンターには保存されません。

Amazon S3 バケットへのアクセスを許可する

Amazon Redshift データを BigQuery に転送するには、ステージング領域として使用する S3 バケットが必要になります。Amazon による詳細な手順については、こちらをご覧ください。

  1. 専用の Amazon IAM ユーザーを作成し、Redshift に対する読み取り専用アクセス権と、S3 に対する読み取り / 書き込みアクセス権を付与することをおすすめします。これは、以下の既存のポリシーを適用することで実現できます。

    Redshift 移行用の Amazon 権限

  2. Amazon IAM ユーザーのアクセスキー ペアを作成します。

オプション: 分離移行キューによるワークロードの制御

移行用に Amazon Redshift キューを定義することで、移行に使用されるリソースを限定および分離できます。この移行用キューは、同時実行クエリ数を最大にして構成できます。定義した移行用キューに特定の移行ユーザー グループを関連付けて、BigQuery へのデータ転送を設定する際にそれらの認証情報を使用します。設定した転送サービスは、移行用キューのみへのアクセスが許可されます。

Amazon Redshift 転送の設定

Amazon Redshift の転送を設定するには:

Console

  1. Cloud Console の BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [Transfers] をクリックします。

  3. [Add Transfer] をクリックします。

  4. [New Transfer] ページで次の操作を行います。

    • [Source] で [Migration: Amazon Redshift] を選択します。
    • [表示名] に、転送名(例: My migration)を入力します。表示名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
    • [宛先データセット] で、該当するデータセットを選択します。

      新規の Amazon Redshift 移行の概要

  5. [データソースの詳細] の各項目に、Amazon Redshift の転送について具体的な詳細情報を入力します。

    • [JDBC connection url for Amazon Redshift] で、Amazon Redshift クラスタにアクセスするための JDBC の URL を指定します。
    • [Username of your database] に、移行する Amazon Redshift データベースのユーザー名を入力します。
    • [Password of your database] に、データベースのパスワードを入力します。
    • [アクセスキー ID] と [シークレット アクセスキー] に、S3 バケットにアクセスを許可するで取得したアクセスキー ペアを入力します。
    • [Amazon S3 URI] に、ステージング領域として使用する S3 バケットの URI を入力します。
    • [Amazon Redshift Schema] に、移行する Amazon Redshift スキーマを入力します。
    • [Table name patterns] に、スキーマ内でテーブル名を照合するための名前かパターンを指定します。正規表現を使用して、<table1Regex>;<table2Regex> の形式でパターンを指定できます。このパターンは、Java の正規表現の構文に従っている必要があります。

      新規の Amazon Redshift 移行データソースの詳細

    • (省略可)[通知オプション] セクションで、次の操作を行います。

      • 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
      • [Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。

        Pub/Sub トピック

  6. [保存] をクリックします。

  7. 転送のリソース名を含め、転送設定の詳細すべてが Cloud Console に表示されます。

    転送確認

bq

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。次のフラグも必要です。

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params
bq mk \
--transfer_config \
--project_id=project_id \
--data_source=data_source \
--target_dataset=dataset \
--display_name=name \
--params='parameters'

ここで

  • project_id はユーザーの Google Cloud プロジェクト ID です。--project_id を指定しない場合は、デフォルトのプロジェクトが使用されます。
  • data_source は、データソースです。redshift
  • dataset は、転送構成の BigQuery ターゲット データセットです。
  • name は、転送構成の表示名です。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
  • parameters には、作成される転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'

Amazon Redshift の転送構成に必要なパラメータは次のとおりです。

  • jdbc_url: Redshift クラスタの場所の特定に使用される JDBC 接続 URL。
  • database_username: データベースへのアクセス、および指定されたテーブルの読み込み解除に使用されるユーザー名。
  • database_password: データベースへのアクセス、および指定されたテーブルの読み込み解除に使用されるパスワード(ユーザー名と併用)。
  • access_key_id: AWS へのリクエストに署名するためのアクセスキー ID。
  • secret_access_key: AWS へのリクエストに署名するためにアクセスキー ID とともに使用されるシークレット アクセスキー。
  • s3_bucket: 「s3://」で始まり、使用する一時ファイルの接頭辞を指定する Amazon S3 の URI。
  • redshift_schema: 移行対象のすべてのテーブルを含む Redshift スキーマ。
  • table_name_patterns: セミコロン(;)で区切られたテーブル名パターン。テーブル パターンは、移行するテーブルを正規表現で指定します。指定しない場合、データベース スキーマにあるテーブルがすべて移行されます。

たとえば、次のコマンドは、mydataset というターゲット データセットと ID google.com:myproject のプロジェクトを使用して、My Transfer という名前の Amazon Redshift 転送を作成します。

bq mk \
--transfer_config \
--project_id=myproject \
--data_source=redshift \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"jdbc_url":"jdbc:postgresql://test-example-instance.sample.us-west-1.redshift.amazonaws.com:5439/dbname","database_username":"my_username","database_password":"1234567890","access_key_id":"A1B2C3D4E5F6G7H8I9J0","secret_access_key":"1234567890123456789012345678901234567890","s3_bucket":"s3://bucket/prefix","redshift_schema":"public","table_name_patterns":"table_name"}'

API

projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。

割り当てと上限

BigQuery の読み込み割り当て量は、読み込みジョブごとにテーブルあたり 15 TB です。Amazon Redshift は内部でテーブルデータを圧縮するため、エクスポートされたテーブルサイズは、Amazon Redshift で提示されたテーブルサイズより大きくなります。15 TB を超えるテーブルを移行する場合は、事前に bq-dts-support@google.com までお問い合わせください。

このサービスを使用すると、Google 以外で費用が発生する可能性があります。詳細については、Amazon RedshiftAmazon S3 の料金ページをご覧ください。

Amazon S3 の整合性モデルにより、一部のファイルが BigQuery への転送に含まれない可能性があります。

次のステップ