全部產品
Search
文件中心

AnalyticDB:自動遷移Amazon Redshift資料至AnalyticDB for PostgreSQL

更新時間:May 14, 2025

阿里雲提供了自動化遷移工具,支援DDL轉換,可以協助您將Amazon Redshift資料自動遷移至AnalyticDB for PostgreSQL

準備工作

  • 需要遷移的Amazon Redshift執行個體。

  • 已開通Amazon S3服務並為其建立臨時IAM角色

  • 為IAM角色賦予S3許可權和Amazon Redshift許可權。

  • 在IAM角色的信任關係中添加下方資訊,約10分鐘生效。

    {
            "Effect": "Allow",
            "Principal": {
                  "Service": "redshift.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
    }
  • 在Amazon Redshift中添加IAM角色為關聯角色。

  • AnalyticDB for PostgreSQL執行個體和OSS儲存空間Bucket位於同一地區。

規格選型

以下內容將指導您如何根據源Amazon Redshift執行個體規格選擇目標AnalyticDB PostgreSQL版的規格。

Amazon Redshift執行個體由Leader Node和多個Compute Node組成。

  • Leader Node:相當於AnalyticDB PostgreSQL版的Master節點,負責與用戶端通訊,分析和制定執行計畫,實施資料庫操作。

  • Compute Node:相當於AnalyticDB PostgreSQL版的Segment節點,由多個Node Slices組成。每個Node Slices都相當於AnalyticDB PostgreSQL版的單個Segment節點,負責實際的資料存放區和查詢計算。

當建立AnalyticDB PostgreSQL版執行個體時,如果不知道如何選擇規格,根據Amazon Redshift中每個Node Slice的規格來選擇合適的AnalyticDB PostgreSQL版節點規格。

樣本

源Amazon Redshift執行個體包含4個Compute Node(每個Node下包含兩個Node Slices),每個Node Slices規格為2核16 GB,儲存為1 TB。

根據源Amazon Redshift執行個體規格,您在建立AnalyticDB PostgreSQL版執行個體時,可以選擇8個Segment節點,節點規格為2C16GB;每個Segment節點的儲存容量選擇1000 GB。

說明
  • 建立AnalyticDB PostgreSQL版執行個體具體操作,請參見建立執行個體

  • 儲存磁碟類型建議選擇ESSD雲端硬碟,I/O效能比高效雲端硬碟更佳。

操作步驟

步驟一:表DDL匯出與轉換

通過調用adbpg-redshift-migration.jar工具,可以實現從Amazon Redshift中匯出DDL,並將其自動轉換為與AnalyticDB for PostgreSQL相容的格式。表DDL匯出與轉換命令樣本如下,請根據實際情況替換相關參數值。

java -jar adbpg-redshift-migration.jar -d redshift -h r-red.cjbgr.cn-north-1.redshift.amazonaws.com.cn -p 5439 -U awsuser -w Lrz**** --transform
重要

執行該命令前需要配置Amazon Redshift所在VPC的安全性群組規則,確保遷移工具所屬的IP能夠通過網路訪問Amazon Redshift資料庫的服務連接埠。

參數說明

  • -d:指定需要下載或轉換的資料庫類型,該步驟指定為redshift

  • -h:指定Redshift執行個體的Host,可在Redshift執行個體控制台介面的JDBC URL模組中擷取。如jdbc:redshift://r-red.cjbgr.cn-north-1.redshift.amazonaws.com.cn:5439/devr-red.cjbgr.cn-north-1.redshift.amazonaws.com.cn即為Host。

  • -p:訪問連接埠,Redshift固定為5439。

  • -U:Redshift的超級使用者名稱稱,通常為建立時的awsuser。

  • -w:Redshift的超級使用者對應的密碼。

  • --transform:進行DDL的下載和轉換。下載的DDL儲存於名為ddl_dump_20250227174322.txt的檔案中,檔案名稱中的數字串代表下載時的時間戳記。轉換後的DDL則儲存在ddl_transform_20250227202402.txt的檔案中,數字串同樣表示下載時的時間戳記。

AnalyticDB for PostgreSQL中建立用於裝載Amazon Redshift資料的資料庫、模式和使用者資訊後,需檢查檔案ddl_transform_20250227202402.txt中的DDL是否存在問題。確認無誤後,即可在 AnalyticDB for PostgreSQL運行該檔案的SQL建立對應表結構。

步驟二:將Amazon Redshift的資料自動上傳至Amazon S3

執行如下命令(以下命令僅為樣本,請根據實際情況替換相關參數值),將Amazon Redshift資料匯出並上傳至Amazon S3。上傳至S3任務結束後,將產生兩個檔案:succeed_transfer_tables_20250228144558.txt表示上傳成功的表,failed_transfer_tables_20250228144558.txt表示上傳失敗的表。

java -jar adbpg-redshift-migration.jar -d redshift -h host-info -p 5432 -U dbuser -w Lrz**** -o s3 -b dbuser-bj --iam-account account-info --iam-role role-info --root-dir rootdir --format parquet --use-iam --china-region --jobs 8 -f tablelist.txt --upload

參數說明

  • -o:指定要使用的雲端儲存體服務,Redshift通常使用S3。

  • -b:Amazon S3 Bucket名稱。

  • --iam-account:IAM角色的帳號ID,通常為12位元字,可在IAM角色的ARN中擷取。例如,arn:aws-cn:iam::123456789012:role/lrz2中的123456789012

  • --iam-role:IAM角色名稱,例如arn:aws-cn:iam::123456789012:role/lrz2中的lrz2

  • --root-dir:需要在S3上儲存資料的根目錄。

  • --format:資料匯出格式,支援CSV、PARQUET、JSON格式,暫不支援修改CSV格式中的行分隔字元。推薦使用PARQUET(adbpg-redshift-migration遷移工具的預設資料格式),匯出資料速度快且安全。

  • --use-iam:使用IAM角色上傳資料。

  • --china-region:如果是中國區則需要添加該參數,其它地區則無需添加。

  • --jobs:並行上傳。

  • -f:指定需要上傳的表名的檔案名稱。檔案內每一行僅寫入一張表的表名,表名格式為database.schema.table。通常可使用--full來上傳Redshift中資料庫的全部表。

  • --upload:使用上傳模式。

步驟三:將資料從S3遷移至OSS

將表資料上傳至S3後,使用阿里雲的OSS線上遷移服務將資料從S3遷移至OSS儲存

步驟四:OSS資料自動匯入至AnalyticDB for PostgreSQL

資料移轉到OSS後,執行以下命令(以下命令僅為樣本,請根據實際情況替換相關參數值)將OSS資料匯入到AnalyticDB for PostgreSQL

重要

執行以下命令需要您提交工單聯絡支援人員開通超級使用者權限。

java -jar adbpg-redshift-migration.jar -d adbpg -h gp-2ze312*******o-master.gpdb.rds.aliyuncs.com -p 5432 -U dbuser -w Lrz**** -o oss -e oss-cn-beijing-internal.aliyuncs.com -i "LTAI5tP*******rCrdj" -k "4k3ntmvK*******M2mqjQcuOy" -b dbuser-bj --root-dir rootdir --format parquet --jobs 8 -f tablelist.txt --download

參數說明

  • -d:指定需要下載或轉換的資料庫類型,該步驟指定為adbpg

  • -h:AnalyticDB for PostgreSQL執行個體的Host。您可從外網地址擷取Host。

  • -p:AnalyticDB for PostgreSQL訪問連接埠,固定值為5432。

  • -U:AnalyticDB for PostgreSQL初始帳號名稱。

  • -w:AnalyticDB for PostgreSQL初始帳號對應的密碼。

  • -o:指定需要使用的雲端儲存,此處為OSS。

  • -e:資料所在的OSS Bucket的Endpoint

  • -i :OSS的AccessKey ID

  • -k:OSS的AccessKey Secret。

  • -b:OSS的Bucket

  • --root-dir:指定OSS根目錄。

  • -f:指定要下載的表名的檔案名稱。檔案內每一行僅寫入一張表的表名,表名格式為database.schema.table。通常直接使用上傳時產生的檔案,例如succeed_transfer_tables_20250228144558.txt。

  • --new-name-file: 使用該參數指定AnalyticDB for PostgreSQL中對應的表名的檔案。在AnalyticDB for PostgreSQL中表名與Redshift中表名不一致的情況下使用該參數。檔案內每一行僅寫入一張表名,表名格式為database.schema.table,每一行與-f 指定檔案中的每一行表名一一對應。

  • --download:使用下載模式。

相關文檔

手動遷移請查看手動遷移Amazon Redshift資料至AnalyticDB for PostgreSQL