Amazon Redshift からのデータ移行

概要

このドキュメントでは、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 から BigQuery へのデータ移行を設定するプロセスをステップごとに説明します。ステップは次のとおりです。

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

Google Cloud Platform の要件

Amazon Redshift データ ウェアハウスの移行を確実に成功させるには、Google Cloud Platform で次の前提条件を満たしていることを確認します。

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

    • GCP Console で [リソースの管理] ページに移動します。

      [リソースの管理] ページに移動

    • 既存のプロジェクトを選択するか、[プロジェクトを作成] をクリックして、新しい GCP プロジェクトを作成します。

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

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

    API を有効にする

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

    有効な API

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

  4. ブラウザで bigquery.cloud.google.com からのポップアップを許可し、転送を設定する際に権限ウィンドウが表示されるようにします。BigQuery Data Transfer Service の権限で転送を管理できるようにする必要があります。

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

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

米国
(us マルチリージョン)
東京
(asia-northeast1)
EU
(eu マルチリージョン)
ロンドン
(europe-west2)
オーストラリア
(australia-southeast1)
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
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
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
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
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

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. GCP Console の BigQuery ウェブ UI に移動します。

    GCP Console に移動する

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

  3. [転送を追加] をクリックします。

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

    • [ソース] で [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] に、データベースのパスワードを入力します。
    • [Access key ID] と [Secret access key] に、S3 バケットにアクセスを許可するで取得したアクセスキー ペアを入力します。
    • [Amazon S3 URI] に、ステージング領域として使用する S3 バケットの URI を入力します。
    • [Amazon Redshift Schema] に、移行する Amazon Redshift スキーマを入力します。
    • [Table name patterns] に、スキーマ内でテーブル名を照合するための名前かパターンを指定します。正規表現を使用して、<table1Regex>;<table2Regex> の形式でパターンを指定できます。このパターンは、Java の正規表現の構文に従っている必要があります。

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

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

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

        Cloud Pub/Sub トピック

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

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

    転送確認

従来の UI

  1. 従来の BigQuery ウェブ UI に移動します。

    従来の BigQuery ウェブ UI に移動

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

  3. [転送を追加] をクリックします。

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

    • [Source] で [Migration: Amazon Redshift] を選択します。
    • [Display name] に転送名(My Migration など)を入力します。表示名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
    • [Destination dataset] で、該当するデータセットを選択します。
    • [JDBC connection url for Amazon Redshift] で、Amazon Redshift クラスタにアクセスするための JDBC の URL を指定します。
    • [Username of your database] に、移行する Amazon Redshift データベースのユーザー名を入力します。
    • [Password of your database] に、データベースのパスワードを入力します。
    • [Access key ID] と [Secret access key] に、S3 バケットにアクセスを許可するで取得したアクセスキー ペアを入力します。
    • [Amazon S3 URI] に、ステージング領域として使用する S3 バケットの URI を入力します。
    • [Amazon Redshift Schema] に、テーブルの移行元となる Amazon Redshift スキーマを入力します。
    • [Table name patterns] で、データベース スキーマ内のテーブル名と照合するための名前かパターンを指定します。正規表現を使用して、<table1Regex>;<table2Regex> の形式でパターンを指定できます。このパターンは、Java の正規表現の構文に従っている必要があります。

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

    • (省略可)[Advanced] セクションを展開し、転送の実行通知を構成します。転送実行通知は、現時点ではアルファ版です。

      • [Cloud Pub/Sub topic] に、トピック名(projects/myproject/topics/mytopic など)を入力します。
      • [Send email notifications] をオンにして、転送実行失敗のメール通知を許可します。
      • 転送を設定するときは [Disabled] をオンにしないでください。既存の転送を無効にするには、転送の操作をご覧ください。

      Cloud Pub/Sub トピック

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

  6. プロンプトが表示されたら [Allow] をクリックし、転送の管理権限を BigQuery Data Transfer Service に付与します。権限ウィンドウを表示するには、ブラウザで bigquery.cloud.google.com からのポップアップを許可する必要があります。

    転送の許可

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

    転送確認

CLI

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 Platform のプロジェクト ID です。--project_id を指定しない場合は、デフォルトのプロジェクトが使用されます。
  • data_source はデータソース redshift です。
  • dataset は、転送構成の BigQuery ターゲット データセットです。
  • name は、転送構成の表示名です。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
  • parameters には、作成される転送構成のパラメータを JSON 形式で指定します(例: --params='{"param":"param_value"}')。Amazon Redshift の移行では、content_owner_id パラメータと table_suffix パラメータを指定する必要があります。

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 への転送に含まれない可能性があります。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。