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> 。 |
运行模板
控制台
- 转到 Dataflow 基于模板创建作业页面。 转到“基于模板创建作业”
- 在作业名称字段中,输入唯一的作业名称。
- 可选:对于区域性端点,从下拉菜单中选择一个值。默认区域为
us-central1
。如需查看可以在其中运行 Dataflow 作业的区域列表,请参阅 Dataflow 位置。
- 从 Dataflow 模板下拉菜单中,选择 the Sourcedb to Spanner template。
- 在提供的参数字段中,输入您的参数值。
- 点击运行作业。
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
:您要使用的模板的版本您可使用以下值:
latest
,以使用模板的最新版本,该模板在存储桶的未标示日期的父文件夹 (gs://dataflow-templates-REGION_NAME/latest/) 中可用- 版本名称(如
2023-09-12-00_RC00
),以使用模板的特定版本,该版本嵌套在存储桶的相应日期父文件夹 (gs://dataflow-templates-REGION_NAME/) 中
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 项目的 IDJOB_NAME
:您选择的唯一性作业名称VERSION
:您要使用的模板的版本您可使用以下值:
latest
,以使用模板的最新版本,该模板在存储桶的未标示日期的父文件夹 (gs://dataflow-templates-REGION_NAME/latest/) 中可用- 版本名称(如
2023-09-12-00_RC00
),以使用模板的特定版本,该版本嵌套在存储桶的相应日期父文件夹 (gs://dataflow-templates-REGION_NAME/) 中
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
:失败/跳过/过滤事件的输出目录