Amazon Redshift からスキーマとデータを移行する
このドキュメントでは、パブリック IP アドレスを使用して Amazon Redshift から BigQuery にデータを移行する方法について説明します。
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 インスタンスから Virtual Private Cloud(VPC)を介してプライベート IP アドレスを使用してデータを転送する場合は、VPC による Amazon Redshift データの移行をご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Data Transfer Service APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and BigQuery Data Transfer Service APIs.
必要な権限を設定する
Amazon Redshift 転送を作成する前に:
転送を作成するプリンシパルに、転送ジョブを含むプロジェクトで次のアクセス許可があることを確認します。
bigquery.transfers.update
(転送を作成する権限)bigquery.datasets.get
とbigquery.datasets.update
の両方(抽出先データセットに対する権限)
Identity and Access Management(IAM)の事前定義ロール
roles/bigquery.admin
には、bigquery.transfers.update
、bigquery.datasets.update
、bigquery.datasets.get
の権限が含まれています。BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御をご覧ください。転送を有効にするために必要な権限が構成されたことを確認するには、Amazon S3 のドキュメントをご覧ください。少なくとも、Amazon S3 ソースデータには AWS 管理ポリシー
AmazonS3ReadOnlyAccess
が適用されている必要があります。
データセットを作成する
データを保存する BigQuery データセットを作成します。テーブルを作成する必要はありません。
Amazon Redshift クラスタへのアクセスを許可する
SQL クライアント用のインバウンド ルールの構成の手順に沿って、次の IP アドレスを許可リストに登録します。データセットのロケーションに対応する IP アドレスを許可リストに登録することも、下の表のすべての IP アドレスを許可リストに登録することもできます。Google 所有のこれらの IP アドレスは、Amazon Redshift のデータ移行用に予約されています。
リージョンのロケーション
リージョンの説明 | リージョン名 | IP アドレス | |
---|---|---|---|
南北アメリカ | |||
コロンバス(オハイオ州) | us-east5 |
34.162.72.184 34.162.173.185 34.162.205.205 34.162.81.45 34.162.182.149 34.162.59.92 34.162.157.190 34.162.191.145 |
|
ダラス | us-south1 |
34.174.172.89 34.174.40.67 34.174.5.11 34.174.96.109 34.174.148.99 34.174.176.19 34.174.253.135 34.174.129.163 |
|
アイオワ | us-central1 |
34.121.70.114 34.71.81.17 34.122.223.84 34.121.145.212 35.232.1.105 35.202.145.227 35.226.82.216 35.225.241.102 |
|
ラスベガス | 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.199.178.12 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 |
|
サンティアゴ | southamerica-west1 |
34.176.188.48 34.176.38.192 34.176.205.134 34.176.102.161 34.176.197.198 34.176.223.236 34.176.47.188 34.176.14.80 |
|
サウスカロライナ | 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 |
|
トロント | northamerica-northeast2 |
34.124.116.108 34.124.116.107 34.124.116.102 34.124.116.80 34.124.116.72 34.124.116.85 34.124.116.20 34.124.116.68 |
|
ヨーロッパ | |||
ベルギー | 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-west10 |
34.32.28.80 34.32.31.206 34.32.19.49 34.32.33.71 34.32.15.174 34.32.23.7 34.32.1.208 34.32.8.3 |
|
フィンランド | 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-southwest1 |
34.175.99.115 34.175.186.237 34.175.39.130 34.175.135.49 34.175.1.49 34.175.95.94 34.175.102.118 34.175.166.114 |
|
ミラノ | europe-west8 |
34.154.183.149 34.154.40.104 34.154.59.51 34.154.86.2 34.154.182.20 34.154.127.144 34.154.201.251 34.154.0.104 |
|
オランダ | 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-west9 |
34.163.76.229 34.163.153.68 34.155.181.30 34.155.85.234 34.155.230.192 34.155.175.220 34.163.68.177 34.163.157.151 |
|
トリノ | europe-west12 |
34.17.15.186 34.17.44.123 34.17.41.160 34.17.47.82 34.17.43.109 34.17.38.236 34.17.34.223 34.17.16.47 |
|
ワルシャワ | europe-central2 |
34.118.72.8 34.118.45.245 34.118.69.169 34.116.244.189 34.116.170.150 34.118.97.148 34.116.148.164 34.116.168.127 |
|
チューリッヒ | 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-south2 |
34.126.212.96 34.126.212.85 34.126.208.224 34.126.212.94 34.126.208.226 34.126.212.232 34.126.212.93 34.126.212.206 |
|
香港 | 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 |
|
メルボルン | australia-southeast2 |
34.126.196.95 34.126.196.106 34.126.196.126 34.126.196.96 34.126.196.112 34.126.196.99 34.126.196.76 34.126.196.68 |
|
ムンバイ | 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 |
|
中東 | |||
ダンマーム | me-central2 |
34.166.20.177 34.166.10.104 34.166.21.128 34.166.19.184 34.166.20.83 34.166.18.138 34.166.18.48 34.166.23.171 |
|
ドーハ | me-central1 |
34.18.48.121 34.18.25.208 34.18.38.183 34.18.33.25 34.18.21.203 34.18.21.80 34.18.36.126 34.18.23.252 |
|
テルアビブ | me-west1 |
34.165.184.115 34.165.110.74 34.165.174.16 34.165.28.235 34.165.170.172 34.165.187.98 34.165.85.64 34.165.245.97 |
|
アフリカ | |||
ヨハネスブルグ | africa-south1 |
34.35.11.24 34.35.10.66 34.35.8.32 34.35.3.248 34.35.2.113 34.35.5.61 34.35.7.53 34.35.3.17 |
マルチリージョンのロケーション
マルチリージョンの説明 | マルチリージョン名 | 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 に転送するには、ステージング領域として使用する Amazon S3 バケットが必要になります。詳しい手順については、Amazon のドキュメントをご覧ください。
専用の Amazon IAM ユーザーを作成し、Amazon Redshift に対する読み取り専用アクセス権と、Amazon S3 に対する読み取り / 書き込みアクセス権を付与することをおすすめします。このステップを実現するには、次のポリシーを適用します。
Amazon IAM ユーザーのアクセスキー ペアを作成します。
分離移行キューによるワークロードの制御を構成する
移行用に Amazon Redshift キューを定義することで、移行に使用されるリソースを限定および分離できます。この移行キューには、同時実行クエリの最大数を指定して構成できます。その後、特定の移行ユーザー グループをキューに関連付けて、BigQuery へのデータ転送を設定する際にそれらの認証情報を使用します。転送サービスは移行キューにのみアクセスできます。
転送情報を収集する
BigQuery Data Transfer Service で移行を設定するために必要な情報を収集します。
- こちらの手順で JDBC の URL を取得します。
- Amazon Redshift データベースに対する適切な権限を持つユーザーのユーザー名とパスワードを取得します。
- Amazon S3 バケットへのアクセスを許可するの手順に従って、AWS アクセスキーのペアを取得します。
- 転送に使用する Amazon S3 バケットの URI を取得します。このバケットにライフサイクル ポリシーを設定して、不要な課金が発生しないようにすることをおすすめします。すべてのデータを BigQuery に転送するのに十分な時間を確保するため、推奨される有効期限は 24 時間です。
データを評価する
データ転送の一環として、BigQuery Data Transfer Service は Amazon Redshift から Cloud Storage に CSV ファイルとしてデータを書き込みます。これらのファイルに ASCII 0 文字が含まれていると、BigQuery に読み込めません。データを評価して、これが問題の原因であるかどうかを判断することをおすすめします。その場合は、データを Parquet ファイルとして Amazon S3 にエクスポートし、BigQuery Data Transfer Service を使用してそれらのファイルをインポートすることで、この問題を回避できます。詳細については、Amazon S3 の転送の概要をご覧ください。
Amazon Redshift 転送を設定する
次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
[データ転送] をクリックします。
[転送を作成] をクリックします。
[ソースタイプ] セクションで、[ソース] リストから [移行: Amazon Redshift] を選択します。
[転送構成名] セクションで、[表示名] フィールドに、
My migration
などの転送の名前を入力します。表示名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。[転送先の設定] セクションで、[データセット] リストから作成したデータセットを選択します。
[データソースの詳細] セクションで、次のようにします。
- [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 の正規表現の構文に従っている必要があります。次に例を示します。lineitem;ordertb
は、lineitem
とordertb
という名前のテーブルに一致します。.*
はすべてのテーブルを照合します。
指定したスキーマからすべてのテーブルを移行するには、このフィールドを空のままにします。
[VPC and the reserved IP range] は空白のままにします。
[サービス アカウント] メニューで、Google Cloud プロジェクトに関連付けられたサービス アカウントからサービス アカウントを選択します。ユーザー認証情報を使用する代わりに、サービス アカウントを転送に関連付けることができます。データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。
- フェデレーション ID でログインした場合、転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、転送用のサービス アカウントは省略可能です。
- サービス アカウントには必要な権限が付与されている必要があります。
省略可: [通知オプション] セクションで、次のようにします。
[保存] をクリックします。
この転送のリソース名を含むすべての転送設定の詳細が Google Cloud コンソールに表示されます。
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 \ --service_account_name=service_account \ --params='parameters'
ここで
- project_id はユーザーの Google Cloud プロジェクト ID です。
--project_id
を指定しない場合は、デフォルトのプロジェクトが使用されます。 - data_source は、データソースです。
redshift
- dataset は、転送構成の BigQuery ターゲット データセットです。
- name は、転送構成の表示名です。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- service_account は、転送の認証に使用されるサービス アカウント名です。サービス アカウントは、転送の作成に使用した
project_id
が所有している必要があります。また、必要な権限がすべて付与されている必要があります。 - 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
リソースのインスタンスを指定します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
割り当てと上限
BigQuery の読み込み割り当て量は、読み込みジョブごと各テーブルあたり 15 TB です。Amazon Redshift は内部でテーブルデータを圧縮するため、エクスポートされたテーブルサイズは、Amazon Redshift で提示されたテーブルサイズより大きくなります。15 TB を超えるテーブルを移行する場合は、まず Cloud カスタマーケアまでお問い合わせください。
このサービスを使用すると、Google の外部で料金が発生する場合があります。詳細については、Amazon Redshift と Amazon S3 の料金ページをご覧ください。
Amazon S3 の整合性モデルのために、一部のファイルが BigQuery に転送されない可能性があります。
次のステップ
- VPC による Amazon Redshift プライベート インスタンスの移行をご覧ください。
- BigQuery Data Transfer Service の詳細を確認する。
- Batch SQL 変換を使用して SQL コードを移行する。