使用虛擬私有雲網路遷移 Amazon Redshift 資料

本文說明如何使用 VPC,將資料從 Amazon Redshift 遷移至 BigQuery。

如果您在 AWS 中擁有私人 Amazon Redshift 執行個體,可以建立虛擬私有雲 (VPC) 網路並與 Amazon Redshift VPC 網路連線,藉此將資料遷移至 BigQuery。資料遷移程序的運作方式如下:

  1. 您可以在要用於轉移作業的專案中建立虛擬私有雲端網路。虛擬私有雲網路不得為共用虛擬私有雲網路。
  2. 您需要設定虛擬私人網路 (VPN),並連結專案的 VPC 網路和 Amazon Redshift VPC 網路。
  3. 設定轉移作業時,您必須指定專案的虛擬私有雲網路和保留的 IP 範圍。
  4. BigQuery 資料移轉服務會建立租用戶專案,並將其附加至您用於移轉的專案。
  5. BigQuery 資料移轉服務會使用您指定的保留 IP 範圍,在租用戶專案中建立一個子網路的 VPC 網路。
  6. BigQuery 資料移轉服務會在專案 VPC 網路和租用戶專案 VPC 網路之間建立VPC 對等互連
  7. BigQuery 資料移轉服務遷移作業會在租用戶專案中執行。這項服務會觸發從 Amazon Redshift 到 Amazon S3 值區中暫存區的上傳作業。卸載速度取決於叢集設定。
  8. BigQuery 資料移轉服務遷移作業會將資料從 Amazon S3 值區移轉至 BigQuery。

如果您想透過公開 IP 從 Amazon Redshift 執行個體轉移資料,可以按照這些操作說明將 Amazon Redshift 資料遷移至 BigQuery

事前準備

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and BigQuery Data Transfer Service APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and BigQuery Data Transfer Service APIs.

    Enable the APIs

  8. 設定必要權限

    建立 Amazon Redshift 移轉作業前,請按照下列步驟操作:

    1. 確認建立移轉作業的人員在 BigQuery 中具有下列必要身分與存取權管理 (IAM) 權限:

      • bigquery.transfers.update 權限,以建立移轉作業
      • 目標資料集的 bigquery.datasets.update 權限

      role/bigquery.admin 預先定義的 IAM 角色具備 bigquery.transfers.updatebigquery.datasets.update 權限。如要進一步瞭解 BigQuery 資料移轉服務中的身分與存取權管理角色,請參閱「存取權控管」一文。

    2. 參閱 Amazon S3 的說明文件,以確保您已設定啟用移轉所需的任何權限。Amazon S3 來源資料至少必須套用 AWS 代管政策 AmazonS3ReadOnlyAccess

    3. 請將適當的身分與存取權管理權限授予設定轉移作業的使用者,以便建立及刪除 VPC 網路對等互連。服務會使用個別使用者的 Google Cloud 使用者憑證建立虛擬私有雲對等互連連線。

      • 建立 VPC 對等互連的權限:compute.networks.addPeering
      • 刪除虛擬私有雲對等互連的權限:compute.networks.removePeering

      roles/project.ownerroles/project.editorroles/compute.networkAdmin 這些預先定義的 IAM 角色預設包含 compute.networks.addPeeringcompute.networks.removePeering 權限。

    建立資料集

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

    授予 Amazon Redshift 叢集的存取權

    請按照「為 SQL 用戶端設定入站規則」中的操作說明,將私人 Amazon Redshift 叢集的 IP 範圍加入許可清單。在後續步驟中,您會在設定轉移作業時,在這個虛擬私有雲網路中定義私人 IP 範圍。

    授予 Amazon S3 值區的存取權

    您必須具備 Amazon S3 值區,做為暫存區域,藉此將 Amazon Redshift 資料移轉到 BigQuery。如需詳細操作說明,請參閱 Amazon 說明文件

    1. 建議您建立專用的 Amazon 身分與存取權管理 (IAM) 使用者,並授予該使用者 Amazon Redshift 的唯讀權限,以及 Amazon S3 的讀取與寫入權限。如要完成這個步驟,您可以套用下列政策:

      Amazon Redshift 遷移作業 Amazon 權限

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

    使用獨立遷移佇列設定工作負載控制

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

    收集轉移資訊

    收集使用 BigQuery 資料移轉服務設定遷移作業所需的資訊:

    • 取得 Amazon Redshift 中的 VPC 和保留 IP 範圍。
    • 請按照這篇文章 的操作說明取得 JDBC 網址。
    • 取得具備 Amazon Redshift 資料庫適當權限的使用者使用者名稱和密碼。
    • 請按照「授予 Amazon S3 值區的存取權」一節的操作說明,取得 AWS 存取金鑰組。
    • 取得要用於轉移作業的 Amazon S3 值區 URI。建議您為這個值區設定生命週期政策,避免產生不必要的費用。建議的到期時間為 24 小時,以便有足夠的時間將所有資料移轉到 BigQuery。

    評估資料

    在資料移轉過程中,BigQuery 資料移轉服務會將 Amazon Redshift 中的資料以 CSV 檔案格式寫入 Cloud Storage。如果這些檔案包含 ASCII 0 字元,就無法載入至 BigQuery。建議您評估資料,判斷是否有問題。如果是,您可以將資料匯出為 Parquet 檔案,然後使用 BigQuery 資料移轉服務匯入這些檔案,藉此解決問題。如需更多資訊,請參閱「Amazon S3 移轉作業總覽」。

    設定虛擬私有雲網路和 VPN

    1. 請確認您具備啟用 VPC 對等連線的權限。詳情請參閱「設定必要權限」。

    2. 請按照本指南中的操作說明設定 Google Cloud 虛擬私有雲網路,在Google Cloud 專案的虛擬私有雲網路和 Amazon Redshift 虛擬私有雲網路之間設定 VPN,並啟用虛擬私有雲對等互連。

    3. 設定 Amazon Redshift 允許連線至 VPN。詳情請參閱「Amazon Redshift 叢集安全群組」。

    4. 在 Google Cloud 控制台中,前往「VPC 網路」頁面,確認 Google Cloud 專案中的Google Cloud VPC 網路是否已透過 VPN 連線至 Amazon Redshift。

      前往「VPC networks」(虛擬私有雲網路)

      主控台頁面會列出您的所有虛擬私有雲網路。

    設定 Amazon Redshift 轉移作業

    請按照下列操作說明設定 Amazon Redshift 移轉作業:

    1. 前往 Google Cloud 控制台的「BigQuery」頁面。

      前往 BigQuery

    2. 按一下「資料移轉」

    3. 按一下「建立轉移作業」

    4. 在「Source type」部分,從「Source」清單中選取「Migration: Amazon Redshift」

    5. 在「Transfer config name」(轉移設定名稱) 區段中,在「Display name」(顯示名稱) 欄位中輸入移轉作業的名稱,例如 My migration。顯示名稱可以是任何容易辨識的值,方便您日後在必要時進行修改。

    6. 在「Destination settings」(目的地設定) 部分,從「Dataset」(資料集) 清單中選擇您建立的資料集

    7. 在「Data source details」(資料來源詳細資料) 部分執行下列操作:

      1. 在「JDBC connection url for Amazon Redshift」(Amazon Redshift 的 JDBC 連線網址) 部分,提供 JDBC 網址以存取 Amazon Redshift 叢集。
      2. 在「資料庫的使用者名稱」部分,輸入要遷移的 Amazon Redshift 資料庫使用者名稱。
      3. 在「Password of your database」(資料庫密碼) 部分,輸入資料庫密碼。

      4. 在「Access key ID」(存取金鑰 ID) 和「Secret access key」(私密存取金鑰) 部分,輸入您在授予 S3 值區的存取權步驟所取得的存取金鑰組。

      5. 在「Amazon S3 URI」部分,輸入將做為暫存區使用的 S3 值區的 URI

      6. 在「Amazon Redshift Schema」(Amazon Redshift 結構定義) 部分,輸入您正在遷移的 Amazon Redshift 結構定義。

      7. 在「Table name patterns」(資料表名稱格式) 部分,指定符合結構定義中資料表名稱的名稱或格式。您可以使用規則運算式,在下列表單中指定格式:<table1Regex>;<table2Regex>。此格式必須遵循 Java 規則運算式語法。例如:

        • lineitem;ordertb 會比對名稱為 lineitemordertb 的資料表。
        • .* 會比對所有資料表。

        將這個欄位留空,用以遷移所有來自指定結構定義的資料表。

      8. 針對虛擬私有雲和保留的 IP 位址範圍,請指定要用於租用戶專案虛擬私有雲網路的虛擬私有雲網路名稱和私人 IP 位址範圍。以 CIDR 區塊表示法指定 IP 位址範圍。

        Amazon Redshift 遷移作業 CIDR 欄位

        • 格式為 VPC_network_name:CIDR,例如:my_vpc:10.251.1.0/24
        • 請使用 CIDR 標記法中的標準私人虛擬私有雲網路位址範圍,開頭為 10.x.x.x
        • IP 範圍必須包含超過 10 個 IP 位址。
        • IP 範圍不得與專案 VPC 網路或 Amazon Redshift VPC 網路中的任何子網路重疊。
        • 如果您為同一個 Amazon Redshift 執行個體設定多個轉移作業,請務必在每個作業中使用相同的 VPC_network_name:CIDR 值,以便多個轉移作業可重複使用相同的遷移基礎架構。
    8. 選用:在「Notification options」(通知選項) 專區,執行下列操作:

      1. 按一下啟用電子郵件通知的切換開關。啟用此選項後,移轉作業管理員會在移轉作業失敗時,收到電子郵件通知。
      2. 在「Select a Pub/Sub topic」(選取 Pub/Sub 主題),選擇您的主題名稱,或點按「Create a topic」(建立主題)。這個選項會針對移轉作業設定 Pub/Sub 執行通知
    9. 按一下 [儲存]

    10. Google Cloud 控制台會顯示移轉設定的所有詳細資料,包括此移轉作業的「Resource name」(資源名稱)

    配額與限制

    使用虛擬私有雲網路遷移 Amazon Redshift 私人執行個體時,遷移代理程式會在單一租用戶基礎架構上執行。由於計算資源有限制,因此最多只允許 5 個並行轉移作業。

    每個資料表的每個載入工作,BigQuery 的載入配額皆為 15 TB。Amazon Redshift 會在內部壓縮資料表資料,因此匯出的資料表大小將大於 Amazon Redshift 回報的資料表大小。如果您計劃遷移大於 15 TB 的資料表,請先與 Cloud Customer Care 團隊聯絡。

    使用這項服務可能必須支付其他產品 (非 Google) 的使用費用。詳情請參閱 Amazon RedshiftAmazon S3 定價頁面。

    由於 Amazon S3 的一致性模型,您可以在移轉到 BigQuery 時不納入部分檔案。

    後續步驟