Sourcedb to Spanner 範本

「SourceDB 到 Spanner」範本是一個批次管道,可將資料從關聯資料庫複製到現有的 Spanner 資料庫,並且使用 JDBC 來連結關聯資料庫。這個範本可以讓您透過適用的 JDBC 驅動程式,將資料從關聯資料庫複製到 Spanner。這項功能僅支援部分 MySQL 類型

為了增加多一層安全防護,您也可以傳遞 Cloud KMS 金鑰,以及使用 Cloud KMS 金鑰加密的 Base64 編碼使用者名稱、密碼和連線字串參數。如要進一步瞭解如何加密使用者名稱、密碼和連線字串參數,請參閱 Cloud KMS API 加密端點。

管道相關規定

  • 關聯資料庫的 JDBC 驅動程式必須可供使用。
  • Spanner 資料表必須在管道執行前存在。
  • Spanner 資料表必須具備相容的結構定義。
  • 關聯資料庫必須可從 Dataflow 執行時所在的子網路存取。

範本參數

參數 說明
sourceConfigURL JDBC 連線網址字串,例如 jdbc:mysql://127.4.5.30:3306/my-db?autoReconnect=true&maxReconnects=10&unicode=true&characterEncoding=UTF-8 或分片設定。
instanceId 目標 Cloud Spanner 執行個體。
databaseId 目的地 Cloud Spanner 資料庫。
projectId 這是 Cloud Spanner 專案的名稱。
outputDirectory 這個目錄用於在遷移作業中傾印失敗/略過/篩選的記錄。
jdbcDriverJars 選用:以逗號分隔的驅動程式 JAR 檔案清單。例如:gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar。預設為空白。
jdbcDriverClassName 選用:JDBC 驅動程式類別名稱,例如:com.mysql.jdbc.Driver。預設值為: com.mysql.jdbc.Driver。
username 選用:JDBC 連線要使用的使用者名稱。預設為空白。
password 選用:JDBC 連線使用的密碼。預設為空白。
tables 選用:要從來源遷移的資料表。預設為空白。
numPartitions 選用:分區數量。這項資訊會與上下限一起形成分區步幅,用於產生的 WHERE 子句運算式,平均分割分區資料欄。如果輸入的值小於 1,系統會將該值設為 1。 預設值為 0
spannerHost 選用:要在範本中呼叫的 Cloud Spanner 端點。例如:https://batch-spanner.googleapis.com。預設值為 https://batch-spanner.googleapis.com。
maxConnections 選用:在每個工作站上設定 JDBC 連線集區,並指定連線數量上限。如要設為無限制,請使用負數。例如:-1。預設值為 0
sessionFilePath 選填:Cloud Storage 中的工作階段路徑,內含 Spanner 遷移工具的對應資訊。預設為空白。
transformationJarPath 選用:Cloud Storage 中的自訂 JAR 位置,內含用於處理記錄的自訂轉換邏輯。預設為空白。
transformationClassName 選用:具有自訂轉換邏輯的完整類別名稱。如果指定 transformationJarPath,這個欄位就必須填寫。預設為空白。
transformationCustomParameters 選用:包含要傳遞至自訂轉換類別的任何自訂參數的字串。預設為空白。
disabledAlgorithms 選用:以半形逗號分隔要停用的演算法。如果將這個值設為「無」,系統就不會停用任何演算法。請謹慎使用這個參數,因為預設停用的演算法可能存在安全漏洞或效能問題。例如: SSLv3, RC4
extraFilesToStage 選用:以半形逗號分隔的 Cloud Storage 路徑或 Secret Manager 密鑰,用於在工作站中暫存檔案。這些檔案會儲存在每個工作站的 /extra_files 目錄中。例如: gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Sourcedb to Spanner template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud CLI

在殼層或終端機中執行範本:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Sourcedb_to_Spanner_Flex \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       sourceConfigURL=SOURCE_CONFIG_URL,\
       instanceId=INSTANCE_ID,\
       databaseId=DATABASE_ID,\
       projectId=PROJECT_ID,\
       outputDirectory=OUTPUT_DIRECTORY,\

更改下列內容:

  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • SOURCE_CONFIG_URL:用來連線至來源資料庫主機的網址。可以是 1. JDBC 連線網址,必須包含主機、通訊埠和來源資料庫名稱,且可選擇性包含 autoReconnect、maxReconnects 等屬性。格式:`jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. 分片設定路徑
  • INSTANCE_ID:Cloud Spanner 執行個體 ID。
  • DATABASE_ID:Cloud Spanner 資料庫 ID。
  • PROJECT_ID:Cloud Spanner 專案 ID。
  • OUTPUT_DIRECTORY:失敗/略過/篩選事件的輸出目錄

API

如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "sourceConfigURL": "SOURCE_CONFIG_URL",
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "projectId": "PROJECT_ID",
       "outputDirectory": "OUTPUT_DIRECTORY",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Sourcedb_to_Spanner_Flex",
     "environment": { "maxWorkers": "10" }
  }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • SOURCE_CONFIG_URL:用來連線至來源資料庫主機的網址。可以是 1. JDBC 連線網址,必須包含主機、通訊埠和來源資料庫名稱,且可選擇性包含 autoReconnect、maxReconnects 等屬性。格式:`jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. 分片設定路徑
  • INSTANCE_ID:Cloud Spanner 執行個體 ID。
  • DATABASE_ID:Cloud Spanner 資料庫 ID。
  • PROJECT_ID:Cloud Spanner 專案 ID。
  • OUTPUT_DIRECTORY:失敗/略過/篩選事件的輸出目錄