跳到主要内容

Google Cloud Spanner

选择对端数据库:

数据链路

基本功能

功能说明
结构迁移

如果对端 Schema 不存在,自动从源端获取元数据并由 CloudCanal 负责生成 CREATE 语句生成对端 Schema

增量同步

支持获取源量产生的 INSERT, UPDATE, DELETE 操作并实时写入对端集群

数据校验和订正

一次性扫描并对比源端与对端的现有数据,可选择根据校验结果自动将不一致的数据覆盖成源端的最新状态。支持周期性定时任务。具体详情见 创建定时校验和订正任务

修改订阅

在链路正常运转期间支持新增、删除表,并自动触发新表的结构全量迁移,具体详情见 修改订阅情况

映射和过滤

支持自动的表名映射规则:保持原名全转化为小写全转化为大写截取 "_数字" 后缀等。

元数据检索

从源端表查对端,查询设置过过滤条件的,查询设置过对端主键的

重置位点

支持按照时间戳回溯位点,通过 Change Streams 重新消费指定时间点之后的增量数据

高级功能

功能说明
全量前清空目标数据

运行全量任务前清除老数据,包括重跑任务、定时全量迁移都会触发此能力

重建目标表

运行全量任务前重建目标表,包括重跑任务、定时全量迁移都会触发此能力

Stream Load 数据写入

采用 Stream Load 到 StarRocks Be 写入数据, 默认攒批写入,可动态调节刷出数据节奏和批次大小

0 值时间处理

支持将 0 值时间设置成不同类型的值,防止写入对端报错

自定义目标表属性

指定诸如分桶数(bucket count)或者副本数(replica count)等属性。

分区表同步

创建任务时可静态或动态指定表级别的分区规则定义,创建结构全量任务会自动应用该分区定义

定时全量迁移任务

具体详情见 创建定时全量迁移任务

自定义开发代码

使用 Java 编写业务处理逻辑并在此应用,过滤特定数据或打宽表。具体详情见 自定义代码处理调试自定义代码 以及 在自定义代码增加日志

增加虚拟列

指定某列或为对端新建某列为虚拟列,可自定义一个固定值应用于目标数据表中(常用于地域标识)。

指定对端主键

支持转换为主键便于对端数据聚合或其他业务形式操作。

数据源端过滤条件

支持使用原生的 SQL WHERE 条件过滤特定的不需要同步的数据。具体详情见 数据过滤条件

限制和注意点

限制项说明
Google Cloud API

需要为您的 Google Cloud 项目启用 Google Cloud Spanner API

对端表类型

仅支持 主键模型(Primary Key)

源端表类型

不支持 无主键表 迁移同步

DDL 同步报错
  • 同一张表连续几个 DDL 将报错(因 StarRocks 对端是异步 DDL)
  • 修改字段约束或者部分类型的 DDL 报错
  • 如遇到 DDL 报错,可在对端变更好表结构,然后通过设置任务参数跳过,文档:跳过 DDL 异常
增量写入冲突策略

Stream Load 写入以主键进行整行替换


源端数据源

前置条件

条件说明
账号权限要求

请参考 Spanner 权限要求

开启数据库变更流 (Change Streams)

需要为 Spanner 数据库开启 Change Streams 功能以捕获增量变更数据。

任务参数

参数名称说明
spannerProjectId

Google Cloud 项目 ID

spannerInstanceId

Spanner 实例 ID

spannerDatabaseId

Spanner 数据库 ID

credentialsPath

Google Cloud 服务账号 (Service Account) 的 JSON 凭证文件路径或 URL。

fullBatchSize

全量同步时的批次大小。

fullPagingCount

全量同步时的分页分区大小。

scanParallel

全量同步时的并行扫描线程数。

snapshotRead

是否使用快照读 (Snapshot Read),有助于提供强一致性的读取点。

increStartPosition

增量同步 (CDC) 的起始位点(时间戳)。

heartbeatIntervalMs

Change Stream 心跳间隔(毫秒)

filterDDL

是否在增量同步中过滤掉 DDL 语句。

fullDataSqlConditionEnabled

在全量同步扫描源端数据时允许添加 SQL 过滤条件。

Tips: 通用参数配置请参考 通用参数及功能


目标端数据源

前置条件

条件说明
账号权限

具备 SELECT, DDL 权限(可选)

网络准备

迁移同步节点(sidecar)可连接 StarRocks FE QueryPortFE/BE HttpPort

任务参数

参数名称说明
host

MySQL 协议交互链接,对应 StarRocks FE QueryPort

httpHost

StarRocks stream load 链接,对应 StarRocks FE/BE HttpPort

totalDataInMemMb

攒批写入,内存中最大数据容量,超过此容量或超过 asyncFlushIntervalSec 则刷出数据到写入队列

asyncFlushIntervalSec

攒批写入,等待刷出的间隔时间,超过此时间或超过 totalDataInMemMb 则刷出数据到写入队列

flushBatchMb

单表最大攒批容量,超过此容量则刷出数据到写入队列

realFlushPauseSec

使用 stream load 刷出数据到 StarRocks 的等待时间,0 则不等待

soTimeoutSec

在 QueryPort 执行操作时 tcp 超时链接 (so_timeout)

httpSoTimeoutSec

在 HttpPort 执行操作时 tcp 超时链接 (so_timeout)

enableTimeZoneProcess

是否对时间字段进行时区转换

timezone

目标端 StarRocks 时区,例如 +08:00 Asia/Shanghai America/New_York

maxInSizePerQuery

校验任务中,对端单次查询的最大 IN 条件值数量,大于该值会自动拆分多次查询

Tips: 通用参数配置请参考 通用参数及功能

连接方式

基础功能

高级功能

使用限制

参数示例

FAQ

作为源端

前置准备

参数配置

作为对端

前置准备

参数配置

联系我们
微信二维码

扫码添加微信,获取技术支持