Sourcedb to Spanner 模板

SourceDB to Spanner 模板是一种批处理流水线,可将数据从关系型数据库复制到现有的 Spanner 数据库中。此流水线使用 JDBC 连接到关系型数据库。您可以使用此模板将数据从任何具有可用 JDBC 驱动程序的关系型数据库复制到 Spanner 中。这仅支持一组有限的 MySQL 类型

为了增加一层额外的保护,您还可以在传入使用 Cloud KMS 密钥加密的 Base64 编码用户名、密码和连接字符串参数的同时,传入该 Cloud KMS 密钥。如需详细了解如何对用户名、密码和连接字符串参数进行加密,请参阅 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 可选:要停用的以英文逗号分隔的算法。如果此值设置为 none,则系统不会停用任何算法。请谨慎使用此参数,因为默认停用的算法可能存在漏洞或性能问题。例如:SSLv3, RC4
extraFilesToStage 可选:用于将文件暂存在工作器中的 Cloud Storage 路径或 Secret Manager 密文,以逗号分隔。 这些文件保存在每个工作器的 /extra_files 目录中。例如:gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>

运行模板

控制台

  1. 转到 Dataflow 基于模板创建作业页面。
  2. 转到“基于模板创建作业”
  3. 作业名称字段中,输入唯一的作业名称。
  4. 可选:对于区域性端点,从下拉菜单中选择一个值。默认区域为 us-central1

    如需查看可以在其中运行 Dataflow 作业的区域列表,请参阅 Dataflow 位置

  5. Dataflow 模板下拉菜单中,选择 the Sourcedb to Spanner template。
  6. 在提供的参数字段中,输入您的参数值。
  7. 点击运行作业

gcloud CLI

在 shell 或终端中,运行模板:

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 作业的 Google Cloud 项目的 ID
  • 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:失败/跳过/过滤事件的输出目录