從 Teradata 遷移結構定義和資料

只要搭配使用 BigQuery 資料移轉服務與特別的遷移代理程式,您就能將 Teradata 地端部署資料倉儲執行個體中的資料複製到 BigQuery。本文將逐步說明如何使用 BigQuery 資料移轉服務,從 Teradata 遷移資料。

事前準備

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Cloud de Confiance console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Cloud de Confiance console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the following roles to the service account: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    7. Click Continue.
    8. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  5. Create a service account key:

    1. In the Cloud de Confiance console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.

設定必要權限

請確認建立移轉作業的主體在包含移轉作業的專案中,具有下列角色:

  • 記錄檢視者 (roles/logging.viewer)
  • Storage 管理員 (roles/storage.admin),或授予下列權限的自訂角色
    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
  • BigQuery 管理員 (roles/bigquery.admin),或授予下列權限的自訂角色:
    • bigquery.datasets.create
    • bigquery.jobs.create
    • bigquery.jobs.get
    • bigquery.jobs.listAll
    • bigquery.tables.get
    • bigquery.transfers.get
    • bigquery.transfers.update

建立資料集

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

建立 Cloud Storage bucket

建立 Cloud Storage bucket,在移轉工作期間暫存資料。

準備本機環境

完成本節中的工作,為轉移作業準備本機環境。

本機需求條件

  • 遷移代理程式會使用 JDBC 連線和 Cloud de Confiance by S3NS API 與 Teradata 執行個體連線。確認網路存取權未遭防火牆封鎖。
  • 確認已安裝 Java Runtime Environment 8 以上版本。
  • 請確認您選擇的擷取方法有足夠的儲存空間,詳情請參閱「擷取方法」。
  • 如果您決定使用 Teradata Parallel Transporter (TPT) 擷取,請確保已安裝 tbuild 公用程式。如要進一步瞭解如何選擇擷取方法,請參閱「擷取方法」。

Teradata 連線詳細資料

  • 請確認您擁有 Teradata 使用者的使用者名稱和密碼,且該使用者有權讀取系統資料表和要遷移的資料表。

  • 請務必知道要連線至 Teradata 執行個體的主機名稱和通訊埠編號。

下載 JDBC 驅動程式

從 Teradata 下載 terajdbc4.jar JDBC 驅動程式檔案,並儲存到可連線至資料倉儲的電腦。

設定 GOOGLE_APPLICATION_CREDENTIALS 變數

將環境變數 GOOGLE_APPLICATION_CREDENTIALS 設定為您在「事前準備」一節中下載的服務帳戶金鑰。

更新 VPC Service Controls 輸出規則

將與您所在區域對應的 BigQuery 資料移轉服務代管 Cloud de Confiance by S3NS 專案,新增至 VPC Service Controls 範圍的輸出規則

下表列出用於資料移轉的區域位置專案編號。請新增與資料集位置對應的專案編號。

多地區位置

多地區說明 多地區名稱 專案編號
歐盟成員國境內的資料中心 eu 17253722542
272853474138
420718595790
929473878322
990232121269
美國資料中心 us 1005756709729
140222280645
247872939591
312976397333
521896999118
525821192359
892499355189
949134172629
990232121269

地區位置

區域說明 區域名稱 專案編號
美洲
蒙特婁 northamerica-northeast1 603911341430
644379120249
665941355665
743643531530
990232121269
多倫多 northamerica-northeast2 181203883014
569023246094
814935732186
833015518790
990232121269
墨西哥 northamerica-south1 439376105624
737643102222
746316165749
863053761002
990232121269
聖保羅 southamerica-east1 133435938206
376122552368
485381725001
796391836836
990232121269
聖地亞哥 southamerica-west1 1087357303029
348543783783
659924941015
862900136725
990232121269
愛荷華州 us-central1 298453567688
788415223852
850878823175
986263347210
990232121269
南卡羅來納州 us-east1 1055108947046
1084124504460
335013112247
724101498857
990232121269
北維吉尼亞州 us-east4 1029854080039
517474920593
970314007431
98298633330
990232121269
俄亥俄州哥倫布 us-east5 1018267783826
386306739011
420397636038
778968775575
990232121269
達拉斯 us-south1 1000457898916
1047122215716
241710172671
955278753983
990232121269
俄勒岡州 us-west1 232019391832
341405773774
376906440760
477215631937
990232121269
洛杉磯 us-west2 1082081077124
593499865061
796558996990
812061960238
990232121269
鹽湖城 us-west3 34769458069
488393466740
870087576864
878441810105
990232121269
拉斯維加斯 us-west4 219770299440
421529192039
516260452158
653925368482
990232121269
歐洲
華沙 europe-central2 408105394529
556626738827
613447812609
875068591969
990232121269
芬蘭 europe-north1 1049140453480
148002628360
610856287987
657186468367
990232121269
斯德哥爾摩 europe-north2 264708615094
275871864623
353052212156
915614473443
990232121269
馬德里 europe-southwest1 1035291313153
1048466610864
16585749286
684773867031
990232121269
比利時 europe-west1 311010690362
337985836396
348525528820
874692481832
990232121269
柏林 europe-west10 1014021387408
1021109191575
1076988971454
965306537493
990232121269
杜林 europe-west12 624998300135
664251133452
672417986210
702529954322
990232121269
倫敦 europe-west2 1013046052024
424062913611
625972158490
707263280432
990232121269
法蘭克福 europe-west3 1087781646048
143240061766
312688138599
715827071311
990232121269
荷蘭 europe-west4 110044889848
398757511504
557234723212
769143166592
990232121269
蘇黎世 europe-west6 163551586425
378713015688
416925392034
669890417706
990232121269
米蘭 europe-west8 103481800693
1082157965924
23655501621
555661886352
990232121269
巴黎 europe-west9 1085882338778
176207547936
221990904254
670920836007
990232121269
亞太地區
台灣 asia-east1 21873972082
271898158674
389278959284
922460772707
990232121269
香港 asia-east2 263483805684
773980783174
865347783058
90665746791
990232121269
東京 asia-northeast1 415417931028
53965067050
953665196151
983967577764
990232121269
大阪 asia-northeast2 205726704771
478186599828
57312416489
861476638029
990232121269
首爾 asia-northeast3 320159292295
548035635347
791473645597
935702892639
990232121269
孟買 asia-south1 13592990997
229940966341
68960523189
901420668689
990232121269
德里 asia-south2 496191507005
54806403576
741779061357
809478923584
990232121269
新加坡 asia-southeast1 541653567103
60558171982
753901882843
944188302893
990232121269
雅加達 asia-southeast2 1074047252998
17464964742
271871433529
427023413305
990232121269
曼谷 asia-southeast3 1020436856624
355273974477
603543103680
777922772431
990232121269
雪梨 australia-southeast1 163046745040
591848239128
623326425100
814418810594
990232121269
墨爾本 australia-southeast2 1062391852597
441829466914
714897033691
748594785463
990232121269
中東地區
杜哈 me-central1 260539430499
380691191456
707684919235
799708208022
990232121269
達曼 me-central2 1067269861014
364585730608
702115426609
932431265647
990232121269
特拉維夫市 me-west1 356023739839
748664533815
869899828196
940471234508
990232121269
非洲
約翰尼斯堡 africa-south1 366497204741
900693348777
930834390708
990232121269
995904484959
其他
AWS ap-northeast-2 aws-ap-northeast-2 118757274428
227045504542
31525566793
415505940944
990232121269
AWS ap-southeast-2 aws-ap-southeast-2 179772227799
236687515237
779037664799
925378406445
990232121269
AWS eu-central-1 aws-eu-central-1 469423327197
5211207427
905007897524
989902812500
990232121269
AWS eu-west-1 aws-eu-west-1 477582827438
653238211450
795832028199
961178626984
990232121269
AWS us-east-1 aws-us-east-1 1005783963369
293187121246
622189180485
78860240845
990232121269
AWS us-west-2 aws-us-west-2 206681800614
264089603202
419256100048
79353630998
990232121269
Azure eastus2 azure-eastus2 1021739993926
1054000274357
495696597482
590387575526
990232121269
Azure westus2 azure-westus2 118244543872
242088193076
278777007439
662989519829
990232121269
僅供內部使用的位置 (europe-west15) europe-west15 1075380375245
635354739083
663432613496
904125362271
990232121269
僅限內部使用的位置 (us-central2) us-central2 1085843140251
269725830808
498892726043
68311303080
990232121269
僅供內部使用的位置 (us-east7) us-east7 173063949542
661852837608
704905947583
956740768291
990232121269
合成位置 (us-synthetic1) us-synthetic1 131957618958
250975404179
740244847288
787843086952
990232121269
僅限內部使用的位置 (us-west8) us-west8 13105749132
248649202605
477355088721
653053504449
990232121269

在內部部署執行的代理程式與 BigQuery 資料移轉服務之間的通訊管道,是將 Pub/Sub 訊息發布至每個移轉主題。BigQuery 資料移轉服務需要將指令傳送至代理程式來擷取資料,而代理程式需要將訊息發布回 BigQuery 資料移轉服務,以更新狀態並傳回資料擷取回應。

建立自訂結構定義檔案

如要使用自訂結構定義檔,而非自動偵測結構定義,請手動建立結構定義檔,或在初始化代理程式時,讓遷移代理程式為您建立。

如果您手動建立結構定義檔,並打算使用 Cloud de Confiance 控制台建立轉移作業,請將結構定義檔上傳至 Cloud Storage bucket,並確定該 bucket 位於要進行轉移作業的專案中。

下載遷移代理程式

將遷移代理程式下載至可連線至資料倉儲的機器。將遷移代理程式 JAR 檔案移至與 Teradata JDBC 驅動程式 JAR 檔案相同的目錄。

設定存取模組的憑證檔案

如果您使用 Cloud Storage 的存取模組搭配 Teradata Parallel Transporter (TPT) 公用程式進行擷取,則必須提供憑證檔案。

建立憑證檔案前,您必須建立服務帳戶金鑰。從下載的服務帳戶金鑰檔案中,取得下列資訊:

  • client_email
  • private_key:複製 -----BEGIN PRIVATE KEY----------END PRIVATE KEY----- 之間的所有字元,包括所有 /n 字元,但不含外圍的雙引號。

取得必要資訊後,請建立憑證檔案。以下是憑證檔案範例,預設位置為 $HOME/.gcs/credentials

[default]
gcs_access_key_id = ACCESS_ID
gcs_secret_access_key = ACCESS_KEY

更改下列內容:

  • ACCESS_ID:存取金鑰 ID,或服務帳戶金鑰檔案中的 client_email 值。
  • ACCESS_KEY:私密存取金鑰,或服務帳戶金鑰檔案中的 private_key 值。

設定轉移作業

使用 BigQuery 資料移轉服務建立移轉作業。

如要自動建立自訂結構定義檔案,請使用遷移代理程式設定轉移作業。

您無法使用 bq 指令列工具建立隨選移轉作業,必須改用 Cloud de Confiance 控制台或 BigQuery 資料移轉服務 API。

如果您要建立週期性移轉作業,強烈建議您指定結構定義檔案,這樣後續移轉作業的資料載入 BigQuery 時,才能正確進行資料分割。如果沒有結構定義檔案,BigQuery 資料移轉服務會從要移轉的來源資料推斷資料表結構定義,但所有有關分割、叢集、主鍵和變更追蹤的資訊都會遺失。此外,後續轉移作業會略過初始轉移作業中已轉移的表格。如要進一步瞭解如何建立結構定義檔案,請參閱「自訂結構定義檔案」。

控制台

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

    前往 BigQuery 頁面

  2. 按一下「資料移轉」

  3. 按一下 [Create Transfer] (建立移轉作業)

  4. 在「來源類型」部分,執行下列操作:

    • 選擇「遷移:Teradata」
    • 在「Transfer config name」(轉移設定名稱) 部分,輸入移轉作業的顯示名稱,例如 My Migration。顯示名稱可以是任意值,日後需要修改移轉作業時能夠據此識別。
    • 選用:在「Schedule options」(排程選項) 中,您可以保留預設值「Daily」(每日) (以建立時間為準),或選擇其他時間,進行週期性增量轉移。如要進行一次性轉移,請選擇「On-demand」(隨選)
    • 在「Destination settings」(目的地設定) 中,選擇適當的資料集。

      新的 Teradata 遷移作業 (一般)。

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

    • 在「Database type」(資料庫類型) 部分,選擇「Teradata」
    • 在「Cloud Storage bucket」,瀏覽用來暫存移轉資料的 Cloud Storage bucket 名稱。請勿輸入前置字串 gs://,只要輸入 bucket 名稱即可。
    • 在「Database name」(資料庫名稱) 中,輸入 Teradata 來源資料庫的名稱。
    • 在「Table name patterns」(資料表名稱格式) 部分,輸入符合來源資料庫中資料表名稱的格式。您可以使用規則運算式指定模式。例如:

      • sales|expenses 會比對名為 salesexpenses 的資料表。
      • .* 會比對所有資料表。
    • 在「服務帳戶電子郵件」部分,輸入與遷移代理程式所用服務帳戶憑證相關聯的電子郵件地址。

    • 選用:針對「結構定義檔案路徑」,輸入自訂結構定義檔案的路徑和檔案名稱。如要進一步瞭解如何建立自訂結構定義檔案,請參閱「自訂結構定義檔案」。您可以將這個欄位留空,讓 BigQuery 自動偵測來源資料表的結構定義

    • 選用:在「翻譯輸出根目錄」中,輸入 BigQuery 翻譯引擎提供的結構定義對應檔案路徑和檔案名稱。如要進一步瞭解如何產生結構定義對應檔案,請參閱「使用翻譯引擎輸出內容進行結構定義」(預覽版)。您可以將這個欄位留空,讓 BigQuery 自動偵測來源資料表結構定義

    • 選用:如要「啟用直接卸載至 GCS」,請勾選核取方塊,啟用 Cloud Storage 的存取模組

  6. 在「Service Account」(服務帳戶) 選單,選取與貴機構Cloud de Confiance 專案相關聯的服務帳戶。您可以將服務帳戶與移轉作業建立關聯,這樣就不需要使用者憑證。如要進一步瞭解如何搭配使用服務帳戶與資料移轉作業,請參閱使用服務帳戶的相關說明。

    • 如果使用聯合身分登入,您必須擁有服務帳戶才能建立移轉作業。如果是以 Google 帳戶登入,則不一定要透過服務帳戶建立移轉作業。
    • 服務帳戶必須具備必要權限
  7. 選用:在「Notification options」(通知選項) 專區,執行下列操作:

    • 如要在移轉作業失敗時,讓移轉管理員收到電子郵件通知,請點選「電子郵件通知」切換按鈕。
    • 點選「Pub/Sub notifications」(Pub/Sub 通知) 切換按鈕,為移轉作業設定 Pub/Sub 執行通知。在「Select a Pub/Sub topic」(選取 Pub/Sub 主題) 選取主題名稱,或是點選「Create a topic」(建立主題)
  8. 按一下 [儲存]

  9. 在「Transfer details」(移轉作業詳細資料) 頁面中,按一下「Configuration」(設定) 分頁標籤。

  10. 請記下這項轉移作業的資源名稱,因為您需要這個名稱才能執行遷移代理程式。

bq

使用 bq 工具建立 Cloud Storage 移轉作業時,系統會將移轉設定設為每 24 小時重複執行一次。如要執行隨選移轉作業,請使用 Cloud de Confiance 控制台或 BigQuery 資料移轉服務 API。

您無法使用 bq 工具設定通知。

輸入 bq mk 指令並加上移轉建立作業旗標 --transfer_config。還需加上以下旗標:

  • --data_source
  • --display_name
  • --target_dataset
  • --params
bq mk \
--transfer_config \
--project_id=project ID \
--target_dataset=dataset \
--display_name=name \
--service_account_name=service_account \
--params='parameters' \
--data_source=data source

其中:

  • project ID 是您的專案 ID。如未提供 --project_id 指定特定專案,系統會使用預設專案。
  • dataset 是您要指定給移轉設定的資料集 (--target_dataset)。
  • name 是移轉設定的顯示名稱 (--display_name)。移轉作業的顯示名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。
  • service_account 是用於驗證移轉作業的服務帳戶名稱。服務帳戶應由用於建立轉移作業的相同 project_id 所擁有,且應具備所有列出的必要權限
  • parameters 含有已建立移轉設定的 JSON 格式參數 (--params)。例如 --params='{"param":"param_value"}'
    • 如要遷移 Teradata,請使用下列參數:
      • bucket 是在遷移期間做為暫存區的 Cloud Storage bucket。
      • database_type 是 Teradata。
      • agent_service_account 是與您建立的服務帳戶相關聯的電子郵件地址。
      • database_name 是 Teradata 中的來源資料庫名稱。
      • table_name_patterns 是用來比對來源資料庫中資料表名稱的模式。您可以使用規則運算式指定模式。此模式必須遵循 Java 規則運算式語法。例如:
        • sales|expenses 會比對名為 salesexpenses 的資料表。
        • .* 會比對所有資料表。
      • is_direct_gcs_unload_enabled 是布林值旗標,可啟用直接卸載至 Cloud Storage 的功能。
  • data_source 是資料來源 (--data_source):on_premises

舉例來說,下列指令會使用 Cloud Storage 值區 mybucket 和目標資料集 mydataset,建立名為 My Transfer 的 Teradata 移轉作業。這項移轉作業會從 Teradata 資料倉儲 mydatabase 移轉所有資料表,而選用的結構定義檔為 myschemafile.json

bq mk \
--transfer_config \
--project_id=123456789876 \
--target_dataset=MyDataset \
--display_name='My Migration' \
--params='{"bucket": "mybucket", "database_type": "Teradata",
"database_name":"mydatabase", "table_name_patterns": ".*",
"agent_service_account":"myemail@mydomain.com", "schema_file_path":
"gs://mybucket/myschemafile.json", "is_direct_gcs_unload_enabled": true}' \
--data_source=on_premises

執行指令後,您會收到如下的訊息:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

請按照指示進行操作,並在指令列中貼上驗證碼。

API

請使用 projects.locations.transferConfigs.create 方法,並提供 TransferConfig 資源的執行個體。

Java

在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定說明操作。詳情請參閱 BigQuery Java API 參考說明文件

如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。

執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a teradata transfer config.
public class CreateTeradataTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String databaseType = "Teradata";
    String bucket = "cloud-sample-data";
    String databaseName = "MY_DATABASE_NAME";
    String tableNamePatterns = "*";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    String schemaFilePath = "/your-schema-path";
    Map<String, Value> params = new HashMap<>();
    params.put("database_type", Value.newBuilder().setStringValue(databaseType).build());
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("database_name", Value.newBuilder().setStringValue(databaseName).build());
    params.put("table_name_patterns", Value.newBuilder().setStringValue(tableNamePatterns).build());
    params.put("agent_service_account", Value.newBuilder().setStringValue(serviceAccount).build());
    params.put("schema_file_path", Value.newBuilder().setStringValue(schemaFilePath).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Teradata Config Name")
            .setDataSourceId("on_premises")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createTeradataTransfer(projectId, transferConfig);
  }

  public static void createTeradataTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Cloud teradata transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Cloud teradata transfer was not created." + ex.toString());
    }
  }
}

遷移代理

您也可以選擇直接透過遷移代理程式設定轉移作業。 詳情請參閱初始化遷移代理程式

初始化遷移代理程式

您必須為新的轉移作業初始化遷移代理程式。無論轉移作業是否為週期性,您只需要初始化一次。初始化只會設定遷移代理程式,不會啟動轉移作業。

如要使用遷移代理程式建立自訂結構定義檔案,請確認工作目錄下有可寫入的目錄,且該目錄的名稱與要用於轉移的專案相同。遷移代理程式會在這裡建立結構定義檔案。 舉例來說,如果您在 /home 中工作,並在專案 myProject 中設定轉移作業,請建立目錄 /home/myProject,並確保使用者可寫入該目錄。

  1. 開啟新工作階段。在指令列中,發出初始化指令, 格式如下:

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --initialize

    以下範例顯示初始化指令,其中 JDBC 驅動程式和遷移代理程式 JAR 檔案位於本機 migration 目錄中:

    Unix、Linux、Mac OS

    java -cp \
    /usr/local/migration/terajdbc4.jar:/usr/local/migration/mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --initialize

    Windows

    將所有檔案複製到 C:\migration 資料夾 (或調整指令中的路徑),然後執行:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --initialize
  2. 系統提示時,請設定下列選項:

    1. 選擇是否要將 Teradata Parallel Transporter (TPT) 範本儲存到磁碟。如果您打算使用 TPT 擷取方法,可以修改儲存的範本,加入適合 Teradata 執行個體的參數。
    2. 輸入轉移工作可用於檔案擷取的本機目錄路徑。請確認您有「擷取方法」一節中建議的最低儲存空間。
    3. 輸入資料庫主機名稱。
    4. 輸入資料庫通訊埠。
    5. 選擇是否使用 Teradata Parallel Transporter (TPT) 做為擷取方法。
    6. 選用:輸入資料庫憑證檔案的路徑。
    7. 選擇是否要指定 BigQuery 資料移轉服務設定名稱。

      如果您要為已設定的轉移作業初始化遷移代理程式,請按照下列步驟操作:

      1. 輸入轉移作業的資源名稱。您可以在移轉作業的「移轉作業詳細資料」頁面中,找到「設定」分頁標籤。
      2. 系統提示時,請輸入要建立的遷移代理程式設定檔路徑和檔案名稱。執行遷移代理程式以啟動轉移作業時,請參閱這個檔案。
      3. 略過其餘步驟。

      如果使用遷移代理程式設定轉移作業,請按 Enter 鍵跳至下一個提示。

    8. 輸入 Cloud de Confiance by S3NS 專案 ID。

    9. 在 Teradata 中輸入來源資料庫的名稱。

    10. 輸入格式,以比對來源資料庫中的資料表名稱。 您可以使用規則運算式指定模式。例如:

      • sales|expenses 會比對名為 salesexpenses 的資料表。
      • .* 會比對所有資料表。
    11. 選用:輸入本機 JSON 結構定義檔的路徑。強烈建議您為週期性轉移作業啟用這項功能。

      如果您未使用結構定義檔,或希望遷移代理程式為您建立結構定義檔,請按 Enter 鍵跳至下一個提示。

    12. 選擇是否要建立新的結構定義檔案。

      如要建立結構定義檔案,請按照下列步驟操作:

      1. 輸入「yes」。
      2. 輸入有權讀取系統資料表和要遷移資料表的 Teradata 使用者名稱。
      3. 輸入該使用者的密碼。

        遷移代理程式會建立結構定義檔案,並輸出其位置。

      4. 修改結構定義檔,標記分割、叢集、主鍵和變更追蹤資料欄,並確認您要將這個結構定義用於轉移設定。如需相關提示,請參閱「自訂結構定義檔」。

      5. Enter 鍵可跳至下一個提示。

      如不想建立結構定義檔,請輸入 no

    13. 輸入目標 Cloud Storage bucket 的名稱,用於暫存遷移資料,然後再載入至 BigQuery。如果遷移代理程式建立了自訂結構定義檔案,該檔案也會上傳至這個值區。

    14. 輸入 BigQuery 中目的地資料集的名稱。

    15. 輸入移轉設定的顯示名稱。

    16. 輸入要建立的遷移代理程式設定檔路徑和檔案名稱。

  3. 輸入所有要求的參數後,遷移代理程式會建立設定檔,並輸出至您指定的本機路徑。如要進一步瞭解設定檔,請參閱下一節。

遷移代理程式的設定檔

在初始化步驟中建立的設定檔與這個範例類似:


{
  "agent-id": "81f452cd-c931-426c-a0de-c62f726f6a6f",
  "transfer-configuration": {
    "project-id": "123456789876",
    "location": "us",
    "id": "61d7ab69-0000-2f6c-9b6c-14c14ef21038"
  },
  "source-type": "teradata",
  "console-log": false,
  "silent": false,
  "teradata-config": {
    "connection": {
      "host": "localhost"
    },
    "local-processing-space": "extracted",
    "database-credentials-file-path": "",
    "max-local-storage": "50GB",
    "gcs-upload-chunk-size": "32MB",
    "use-tpt": true,
    "transfer-views": false,
    "max-sessions": 0,
    "spool-mode": "NoSpool",
    "max-parallel-upload": 4,
    "max-parallel-extract-threads": 1,
    "session-charset": "UTF8",
    "max-unload-file-size": "2GB"
  }
}
   

遷移代理程式設定檔中的轉移工作選項

  • transfer-configuration:BigQuery 中這項移轉設定的相關資訊。
  • teradata-config:適用於這項 Teradata 擷取的特定資訊:

    • connection:主機名稱和通訊埠的相關資訊
    • local-processing-space:代理程式會將表格資料擷取到這個資料夾,然後上傳至 Cloud Storage。
    • database-credentials-file-path(選用) 檔案路徑,其中包含自動連線至 Teradata 資料庫的憑證。檔案應包含兩行憑證。您可以採用使用者名稱/密碼,如下列範例所示:
      username=abc
      password=123
      您也可以改用 SecretManager 中的密鑰:
      username=abc
      secret_resource_id=projects/my-project/secrets/my-secret-name/versions/1
      使用憑證檔案時,請務必控管本機檔案系統中儲存憑證檔案的資料夾存取權,因為憑證檔案不會經過加密。如果未提供路徑,啟動代理程式時,系統會提示您輸入使用者名稱和密碼。
    • max-local-storage:在指定暫存目錄中,用於擷取的本機儲存空間上限。預設值為 50GB。支援的格式為 numberKB|MB|GB|TB

      在所有擷取模式中,檔案上傳至 Cloud Storage 後,就會從本機暫存目錄刪除。

    • use-tpt:指示遷移代理程式使用 Teradata Parallel Transporter (TPT) 做為擷取方法。

      針對每個資料表,遷移代理程式會產生 TPT 指令碼、啟動 tbuild 程序並等待完成。tbuild 程序完成後,代理程式會列出並上傳擷取的檔案至 Cloud Storage,然後刪除 TPT 指令碼。詳情請參閱「擷取方法」。

    • transfer-views:指示遷移代理程式也從檢視區塊轉移資料。只有在遷移期間需要自訂資料時,才使用這項功能。 在其他情況下,請將檢視區塊遷移至 BigQuery 檢視區塊。 使用這個選項時,必須符合下列先決條件:

      • 這個選項僅適用於 16.10 以上版本的 Teradata。
      • 檢視區塊應定義整數資料欄「partition」,指向基礎資料表中指定資料列的分區 ID。
    • max-sessions:指定擷取工作 (FastExport 或 TPT) 使用的工作階段數量上限。如果設為 0,則 Teradata 資料庫會決定每個擷取工作的工作階段數量上限。

    • gcs-upload-chunk-size:將大型檔案分塊上傳至 Cloud Storage。這個參數和 max-parallel-upload 可用來控管同時上傳至 Cloud Storage 的資料量。舉例來說,如果 gcs-upload-chunk-size 為 64 MB,而 max-parallel-upload 為 10 MB,則理論上遷移代理程式可同時上傳 640 MB (64 MB * 10) 的資料。如果某個區塊上傳失敗,則必須重試上傳整個區塊。區塊大小必須很小。

    • max-parallel-upload:這個值會決定遷移代理程式用來將檔案上傳至 Cloud Storage 的執行緒數量上限。如果未指定,預設值為 Java 虛擬機器可用的處理器數量。一般而言,選擇的值應以執行代理程式的機器所擁有的核心數量為準。因此,如果擁有 n 個核心,最佳執行緒數量應為 n。如果核心是超執行緒,最佳數量應為 (2 * n)。調整 max-parallel-upload 時,也必須考量其他設定,例如網路頻寬。調整這個參數可以提升上傳至 Cloud Storage 的效能。

    • spool-mode:在大多數情況下,NoSpool 模式是最佳選擇。代理程式設定中的預設值為 NoSpool。如果不使用 NoSpool 的缺點適用於您的情況,您可以變更這個參數。

    • max-unload-file-size:決定解壓縮檔案的大小上限。這項參數不會強制執行 TPT 擷取作業。

    • max-parallel-extract-threads:這項設定僅適用於快速匯出模式。這項屬性會決定從 Teradata 擷取資料時使用的平行執行緒數量。調整這項參數可提升擷取作業的效能。

    • tpt-template-path:使用這項設定提供自訂 TPT 擷取指令碼做為輸入內容。您可以使用這項參數,對遷移資料套用轉換。

    • tpt-export-count:匯出運算子負責從 Teradata 資料庫擷取資料。這個參數會覆寫 TPT 腳本中的預設匯出計數。為確保每個執行個體都有足夠的管道連線至資料庫,這個參數的值應小於或等於 max-sessions 參數的值。

    • tpt-file-writer-count:檔案寫入器運算子負責接收匯出運算子傳送的資料,並將資料寫入儲存系統的實體檔案。這個參數會覆寫 TPT 指令碼中的預設檔案寫入器計數。理想情況下,檔案寫入器計數必須與匯出計數相符;否則,傳輸作業會在擷取或寫入器端成為瓶頸。

    • schema-mapping-rule-path(選用) 包含結構定義對應的設定檔路徑,可覆寫預設對應規則。部分對應類型僅適用於 Teradata Parallel Transporter (TPT) 模式。

      範例:從 Teradata 類型 TIMESTAMP 對應至 BigQuery 類型 DATETIME

      {
      "rules": [
        {
          "database": {
              "name": "database.*",
              "tables": [
                 {
                   "name": "table.*"
                 }
              ]
          },
          "match": {
            "type": "COLUMN_TYPE",
            "value": "TIMESTAMP"
          },
          "action": {
            "type": "MAPPING",
            "value": "DATETIME"
          }
        }
      ]
      }

      屬性:

      • database(選用) name 是要納入的資料庫規則運算式。預設會加入所有資料庫。
      • tables(選用) 是資料表陣列。name 是要納入的資料表正規運算式。預設會納入所有資料表。
      • match(必要)
        • type 支援的值:COLUMN_TYPE
        • value 支援的值:TIMESTAMPDATETIME
      • action(必要)
        • type 支援的值:MAPPING
        • value 支援的值:TIMESTAMPDATETIME
    • compress-output(選用) 決定是否要在儲存至 Cloud Storage 前壓縮資料。這項設定只適用於 tpt 模式。預設值為 false

    • gcs-module-config-dir(選用) 存取 Cloud Storage bucket 的憑證檔案路徑。預設目錄為 $HOME/.gcs,但您可以使用這個參數變更目錄。

    • gcs-module-connection-count(選用) 指定與 Cloud Storage 服務的 TCP 連線數。預設值為 10。

    • gcs-module-buffer-size(選用) 指定用於 TCP 連線的緩衝區大小。預設值為 8 MB (8388608 個位元組)。為方便使用,您可以採用下列乘數:

      • k (1000)
      • K (1024)
      • m (1000 * 1000)
      • M (1024*1024)
    • gcs-module-buffer-count(選用) 指定要用於 gcs-module-connection-count 所指定 TCP 連線的緩衝區數量。建議您使用的值是連線至 Cloud Storage 服務的 TCP 連線數量的兩倍。預設值為 2 * gcs-module-connection-count

    • gcs-module-max-object-size(選用) 這項參數可控管 Cloud Storage 物件的大小。這個參數的值可以是整數,也可以是整數後方緊接著下列其中一個乘數 (不含空格):

      • k (1000)
      • K (1024)
      • m (1000 * 1000)
      • M (1024*1024)
    • gcs-module-writer-instances(選用) 這個參數會指定 Cloud Storage 寫入器執行個體的數量。預設值為 1。您可以增加這個值,在 TPT 匯出作業的寫入階段提高輸送量。

最佳化代理程式資料擷取作業

微調代理程式參數可最佳化資料擷取程序,進而提升整體轉移程序效率。

下表提供可用於調整遷移作業的參數資訊:

參數 建議值 說明
gcs-module-writer-instances 4 增加 TPT 擷取和 Cloud Storage 寫入作業的平行化程度。調整這個值,以平衡移轉最佳化和 Teradata 執行個體負載。
gcs-module-connection-count 10 設定與 Cloud Storage 的 TCP 連線數量。增加這個值可改善 Cloud Storage 上傳階段的平行處理。
gcs-module-buffer-size 32 公尺 定義 TCP 連線的緩衝區大小。測試結果顯示,32m可獲得最佳成效。
tpt-export-count 必須小於或等於 max-sessions 值。 覆寫 TPT 腳本中的預設匯出運算子計數。這個值應小於或等於 max-sessions 值,確保每個執行個體都有足夠的管道連線至資料庫。
tpt-file-writer-count 應等於 export-count 值。 覆寫 TPT 指令碼中的預設檔案寫入器運算子計數。理想情況下,這個值應與 tpt-export-count 值相符,以免發生瓶頸。

設定時,請考慮下列最佳做法:

  • 記憶體限制:請確保下列計算結果小於執行代理程式的虛擬機器 (VM) 總記憶體。計算時,所有值都必須使用一致的單位。

    $$ \text{gcs-module-writer-instances} \times \text{gcs-module-buffer-size} \times \text{gcs-module-buffer-count} < \text{Total VM memory} $$
  • 調整順序

    1. 請先調整 gcs-module-writer-instances 參數值,找出效能和負載的最佳平衡點。
    2. 如要進一步提升效能,請提高 gcs-module-connection-count 值。
  • 自動調整資源配置:根據預設,gcs-module-buffer-size 參數值通常會設為連線數的兩倍,但我們建議針對這些工作負載明確調整值為 32m

執行遷移代理程式

初始化遷移代理程式並建立設定檔後,請按照下列步驟執行代理程式並啟動遷移作業:

  1. 指定 JDBC 驅動程式、遷移代理程式和設定檔的路徑,然後執行代理程式。設定檔是在先前的初始化步驟中建立。

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=path to configuration file

    Unix、Linux、Mac OS

    java -cp \
    /usr/local/migration/Teradata/JDBC/terajdbc4.jar:mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=config.json

    Windows

    將所有檔案複製到 C:\migration 資料夾 (或調整指令中的路徑),然後執行:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --configuration-file=config.json

    準備好繼續遷移時,請按下 Enter,如果初始化期間提供的類別路徑有效,代理程式就會繼續執行。

  2. 系統提示時,請輸入資料庫連線的使用者名稱和密碼。如果使用者名稱和密碼有效,系統就會開始移轉資料。

    選用:在啟動遷移作業的指令中,您也可以使用旗標將憑證檔案傳遞至代理程式,不必每次都輸入使用者名稱和密碼。詳情請參閱代理程式設定檔中的選用參數 database-credentials-file-path。使用憑證檔案時,請採取適當步驟控管本機檔案系統中儲存憑證檔案的資料夾存取權,因為憑證檔案未經過加密。

  3. 請保持這個工作階段開啟,直到遷移完成為止。如果您建立的是週期性遷移作業,請保持這個工作階段開啟。如果這個工作階段中斷,目前和日後的遷移作業都會失敗。

  4. 定期監控代理程式是否正在執行。如果轉移作業正在進行,但 24 小時內沒有任何服務專員回覆,轉移作業就會失敗。

  5. 如果遷移代理程式在轉移作業進行中或排定時間時停止運作, Cloud de Confiance 控制台會顯示錯誤狀態,並提示您重新啟動代理程式。如要重新啟動遷移代理程式,請返回本節開頭。您不需要重複執行初始化指令。轉移作業會從未完成的表格繼續進行。

追蹤遷移進度

您可以在 Cloud de Confiance 控制台查看遷移狀態。您也可以設定 Pub/Sub 或電子郵件通知。請參閱 BigQuery 資料移轉服務通知

BigQuery 資料移轉服務會根據建立移轉設定時指定的排程,排定並啟動移轉作業。請務必在移轉作業進行時執行遷移代理程式。如果代理程式在 24 小時內沒有任何更新,移轉作業就會失敗。

Cloud de Confiance 控制台中的遷移狀態範例:

遷移狀態

升級遷移代理程式

如有新版遷移代理程式,請務必手動更新。如要接收 BigQuery 資料移轉服務的通知,請訂閱版本資訊

後續步驟