從 Amazon Redshift 遷移資料

總覽

本文件說明將資料從 Amazon Redshift 遷移到 BigQuery 的程序。

BigQuery 資料移轉服務可讓您將來自 Amazon Redshift 資料倉儲的資料複製到 BigQuery。此服務會運用 GKE 中的遷移代理程式,並觸發從 Amazon Redshift 到 Amazon S3 值區中暫存區的上傳作業。接著,BigQuery 資料移轉服務就會將資料從 Amazon S3 值區移轉到 BigQuery。

下圖顯示遷移期間 Amazon Redshift 資料倉儲與 BigQuery 之間的整體資料流動情況。

事前準備

本節說明將資料從 Amazon Redshift 遷移到 BigQuery 的逐步設定程序。步驟如下:

  • 符合必備條件並設定 Google Cloud Platform 的權限。
  • 授予 Amazon Redshift 叢集的存取權。
  • 授予 Amazon S3 暫存值區的存取權。
  • 使用 BigQuery 資料移轉服務設定遷移作業。您必須具備以下項目:
    • Amazon Redshift JDBC 網址。請依照此操作說明取得 JDBC 網址
    • Amazon Redshift 資料庫的使用者名稱和密碼。
    • 您將從下列步驟取得的 AWS 存取金鑰組:授予 S3 值區的存取權
    • 用來暫時暫存資料的 Amazon S3 值區網址。建議您為這個值區設定生命週期政策,避免產生不必要的費用。建議的到期時間為 24 小時,以便有足夠的時間將所有資料移轉到 BigQuery。

Google Cloud Platform 需求

如要確保 Amazon Redshift 資料倉儲遷移作業能順利進行,請確認系統已符合下列 Google Cloud Platform 的需求。

  1. 選擇或建立 Google Cloud Platform 專案以儲存遷移資料。

  2. 啟用 BigQuery 資料移轉服務 API。

    在 Google Cloud Platform 主控台中,按一下 BigQuery Data Transfer Service API 頁面上的 [Enable] (啟用) 按鈕。

    啟用 API

    新專案會自動啟用 BigQuery。針對現有專案,您可能需要啟用 BigQuery API。有綠色的勾號表示 API 已啟用。

    已啟用的 API

  3. 建立 BigQuery 資料集來儲存您的資料。您無須建立任何資料表。

  4. 允許瀏覽器顯示來自 bigquery.cloud.google.com 的彈出式視窗,以便您在設定移轉時查看權限視窗。您必須允許 BigQuery 資料移轉服務取得相關權限,以管理您的移轉作業。

授予 Amazon Redshift 叢集的存取權

按照 Amazon 的操作說明將以下 IP 位址加入許可清單。您可以將與資料集位置相對應的 IP 位址加入許可清單,也可以將下表中的所有 IP 位址加入許可清單。這些 Google 擁有的 IP 位址會保留給 Amazon Redshift 資料遷移作業使用。

美國
(us multi-region)
東京
(asia-northeast1)
歐盟
(eu multi-region)
倫敦
(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 值區的存取權

您將需要使用 S3 值區做為暫存區域,藉此將 Amazon Redshift 資料移轉到 BigQuery。如需 Amazon 的詳細操作說明,請按這裡

  1. 建議您建立專用的 Amazon IAM 使用者,並授予該使用者 Redshift 的唯讀權限,以及 S3 的讀取與寫入權限。可藉由套用下列現有政策來完成此作業:

    Redshift 遷移 Amazon 權限

  2. 建立 Amazon IAM 使用者存取金鑰組

選用:使用獨立遷移佇列的工作負載控制

您可以定義用於遷移目的的 Amazon Redshift 佇列,以限制及分離用於遷移作業的資源。您可以使用最大並行查詢次數來設定這個遷移佇列。然後,您可以在某個遷移使用者群組與佇列之間建立關聯,並在設定遷移作業以移轉資料到 BigQuery 時使用這些憑證。移轉服務只具備遷移佇列的存取權。

設定 Amazon Redshift 遷移作業

如要設定 Amazon Redshift 移轉作業:

主控台

  1. 前往 GCP Console 中的 BigQuery 網頁版 UI。

    前往 GCP 主控台

  2. 按一下 [Transfers] (傳輸作業)

  3. 按一下 [Add Transfer] (新增移轉作業)。

  4. 在「New Transfer」(新增移轉作業) 頁面上:

    • 在「Source」(來源) 部分,選擇「Migration: Amazon Redshift」(遷移:Amazon Redshift)
    • 在「Display name」(顯示名稱) 部分,輸入移轉作業的名稱,例如 My migration。顯示名稱可以是任何容易辨識移轉的值,方便您日後在必要時進行修改。
    • 在「Destination dataset」(目的地資料集) 部分,選擇適當的資料集。

      Amazon Redshift 新遷移作業 (一般)

  5. 接著在「Data Source Details」(資料來源詳細資料) 部分,輸入 Amazon Redshift 移轉作業的特定詳細資料。

    • 在「JDBC connection url for Amazon Redshift」(Amazon Redshift 的 JDBC 連線網址) 部分,提供 JDBC 網址以存取 Amazon Redshift 叢集。
    • 在「Username of your database」(資料庫的使用者名稱) 部分,輸入您要遷移的 Amazon Redshift 資料庫使用者名稱。
    • 在「Password of your database」(資料庫密碼) 部分,輸入資料庫密碼。
    • 在「Access key ID」(存取金鑰 ID) 和「Secret access key」(存取密鑰) 部分,輸入您在授予 S3 值區的存取權步驟所取得的存取金鑰組。
    • 在「Amazon S3 URI」部分,輸入將做為暫存區使用的 S3 值區的 URI
    • 在「Amazon Redshift Schema」(Amazon Redshift 結構定義) 部分,輸入您正在遷移的 Amazon Redshift 結構定義。
    • 在「Table name patterns」(資料表名稱格式) 部分,指定符合結構定義中資料表名稱的名稱或格式。您可以使用規則運算式,在下列表單中指定格式:<table1Regex>;<table2Regex>。此格式必須遵循 Java 規則運算式語法。

      Amazon Redshift 新遷移資料來源詳細資料

    • (選用) 在「Notification options」(通知選項) 區段中:

      • 按一下啟用電子郵件通知的切換開關。當您啟用此選項時,移轉管理員會在移轉作業失敗時收到電子郵件通知。
      • 在「Select a Cloud Pub/Sub topic」(請選取 Cloud Pub/Sub 主題) 部分,選擇您的主題名稱,或按一下 [Create a topic] (建立主題)。此選項可為移轉作業設定 Cloud Pub/Sub 執行通知。移轉執行通知目前仍為 Alpha 版。

        Cloud Pub/Sub 主題

  6. 按一下 [Save] (儲存)

  7. 網頁版 UI 會顯示移轉設定的所有詳細資料,包括此移轉作業的「Resource name」(資源名稱)。

    移轉作業確認

傳統版 UI

  1. 使用傳統 BigQuery 網頁版 UI

    前往 BigQuery 傳統網頁版 UI

  2. 按一下 [Transfers] (傳輸作業)

  3. 按一下 [Add Transfer] (新增移轉作業)。

  4. 在「New Transfer」(新增移轉作業) 頁面上:

    • 在「Source」(來源) 部分,選擇「Migration: Amazon Redshift」(遷移:Amazon Redshift)
    • 在「Display name」(顯示名稱) 部分,輸入移轉作業的名稱,例如 My Migration。顯示名稱可以是任何容易辨識移轉的值,方便您日後在必要時進行修改。
    • 在「Destination dataset」(目的地資料集) 部分,選擇適當的資料集。
    • 在「JDBC connection url for Amazon Redshift」(Amazon Redshift 的 JDBC 連線網址) 部分,提供 JDBC 網址以存取 Amazon Redshift 叢集。
    • 在「Username of your database」(資料庫的使用者名稱) 部分,輸入您要遷移的 Amazon Redshift 資料庫使用者名稱。
    • 在「Password of your database」(資料庫密碼) 部分,輸入資料庫密碼。
    • 在「Access key ID」(存取金鑰 ID) 和「Secret access key」(存取密鑰) 部分,輸入您在授予 S3 值區的存取權步驟所取得的存取金鑰組。
    • 在「Amazon S3 URI」部分,輸入將做為暫存區使用的 S3 值區的 URI
    • 在「Amazon Redshift Schema」(Amazon Redshift 結構定義) 部分,輸入您要從中遷移資料表的 Amazon Redshift 結構定義。
    • 在「Table name patterns」(資料表名稱格式) 部分,指定符合資料庫結構定義中資料表名稱的名稱或格式。您可以使用規則運算式,在下列表單中指定格式:<table1Regex>;<table2Regex>。此格式必須遵循 Java 規則運算式語法。

    Amazon Redshift 新遷移資料來源詳細資料

    • (選用) 展開「Advanced」(進階) 區段,然後設定移轉作業的執行通知。移轉執行通知目前仍為 Alpha 版。

      • 在「Cloud Pub/Sub topic」(Cloud Pub/Sub 主題) 部分,輸入您的主題名稱,例如 projects/myproject/topics/mytopic
      • 勾選「Send email notifications」(傳送電子郵件通知),讓系統在移轉執行失敗時,寄送電子郵件通知。
      • 設定移轉作業時,請勿勾選 [Disabled] (已停用)。如需停用現有的移轉作業,請參閱使用移轉一文。

      Cloud Pub/Sub 主題

  5. 按一下 [Add] (新增)。

  6. 如果出現系統提示,請按一下 [Allow] (允許),授予 BigQuery 資料移轉服務管理移轉作業的權限。您必須允許 bigquery.cloud.google.com 的瀏覽器彈出式視窗,以檢視權限視窗。

    允許移轉作業

  7. 網頁版 UI 會顯示移轉設定的所有詳細資料,包括此移轉作業的「Resource name」(資源名稱)

    移轉作業確認

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 是移轉設定的目標資料集。
  • name 是移轉設定的顯示名稱。移轉名稱可以是任何容易識別並且方便您後續修改的值。
  • 「parameters」含有已建立移轉設定的 JSON 格式參數,例如:--params='{"param":"param_value"}'。如要進行 Amazon Redshift 遷移作業,您必須提供 content_owner_idtable_suffix 參數。

Amazon Redshift 移轉設定所需的參數如下:

  • jdbc_url:JDBC 連線網址可用來找出 Amazon Redshift 叢集的位置。
  • database_username:用來存取資料庫以卸載指定資料表的使用者名稱。
  • database_password:與使用者名稱搭配使用的密碼,可存取資料庫以卸載指定資料表。
  • access_key_id:簽署向 AWS 發出之要求的存取金鑰 ID。
  • secret_access_key:與存取金鑰 ID 搭配使用的存取密鑰,密鑰可簽署向 AWS 發出的要求。
  • s3_bucket:以「s3://」開頭的 Amazon S3 URI,並且可指定用於暫存檔案的前置字串。
  • redshift_schema:包含所有要遷移之資料表的 Amazon Redshift 結構定義。
  • table_name_patterns:以分號 (;) 分隔的資料表名稱格式。資料表格式是要遷移之資料表的規則運算式。如未提供,則系統會遷移資料庫結構定義下的所有資料表。

舉例來說,下列指令會建立名稱為 My Transfer 的 Amazon Redshift 移轉作業,其中目標資料集的名稱為 mydataset,專案的 ID 為 google.com:myproject

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 時不納入部分檔案。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁