🎉 CloudCanal 上线 V6.6.0.0:开放 TDSQL PostgreSQL 链路,优化 Kudu DDL 同步能力
跳到主要内容

MariaDB 到 StarRocks

选择对端数据库:

数据链路

基本功能

功能说明
结构迁移

如目标不存在所选表,则自动根据源端元数据,结合映射生成对端创建语句并执行创建

全量数据迁移

逻辑迁移,通过顺序扫描表数据,将数据分批写入到对端数据库

增量实时同步

支持 INSERT, UPDATE, DELETE 常见 DML 同步

数据校验和订正

全量数据校验,并可选根据校验结果订正差异数据,支持定时,文档:创建定时校验订正任务

修改订阅

新增、删除、修改订阅表,支持历史数据迁移,文档:修改订阅

重置位点

支持按照文件位点、时间戳 回溯位点,重新消费过去一段时间或指定 Binlog 文件和位点开始的增量日志

表名映射

支持 和源端保持一致, 转小写, 转大写, 以'_数字'后缀截取

DDL 同步
  • ALTER TABLE ADD COLUMN, MODIFY COLUMN, DROP COLUMN
  • CREATE TABLE (全库同步)
  • RENAME TABLE (全库同步)
  • DROP TABLE (全库同步)
元数据检索

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

高级功能

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

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

重建目标表

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

Stream Load 数据写入

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

0 值时间处理

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

兼容 Online DDL

支持 GH-OST, PT-OSC, Aliyun DMS Online DDL, PT_GHOST 同步,文档:支持 GH-OST 和 PT-OSC

自定义表属性

包括分桶数、副本数等属性设置

设置数据分区

创建任务时,可按表粒度指定分区定义(静态或动态),结构迁移时自动添加该分区定义

表达式表名

支持按正则表达式表名迁移同步数据,实现全库同步、分表汇聚等功能中自动增减表需求,文档:表达式任务

定时全量迁移

文档1:创建定时全量任务
文档2:定时全量实现增量数据迁移

自定义代码

文档1:创建自定义代码任务
文档2:自定义代码任务 debug
文档3:在自定义代码中打日志

添加虚拟列

支持添加自定义的虚拟列,指定的值为固定值,如区域、编号等

设置目标主键

变更主键为其他字段,方便数据聚合等操作

数据过滤条件

支持 WHERE 条件进行数据过滤,内容为 SQL 92 子集,文档:创建数据过滤任务

限制和注意点

限制项说明
MySQL 存储引擎

支持 InnoDB, MySIAM, 阿里云 XEngine, 其他存储引擎暂未测试

MySQL 字符集

支持 utf8, utf8mb4, latin1, 其他编码暂未测试

对端表类型

仅支持 主键模型(Primary Key)

源端表类型

不支持 无主键表 迁移同步

增量写入冲突策略

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

DDL 同步限制
  • 不同步二级索引的新增、删除和重命名,包括普通、唯一和联合索引。例如 ADD INDEX idx_name(name)、ADD UNIQUE INDEX uk_code(code)、DROP INDEX idx_name、RENAME INDEX idx_name TO idx_name_v2。
  • 不同步 ALTER TABLE ... ADD PRIMARY KEY (...) 和 ALTER TABLE ... DROP PRIMARY KEY。
  • 忽略列顺序选项 FIRST、AFTER,例如 ADD COLUMN code VARCHAR(32) AFTER id 不保证目标列顺序与源端一致。
  • 普通非主键列按可空方式转换。例如 MODIFY COLUMN name VARCHAR(100) NOT NULL 不会将目标普通列改为 NOT NULL;目标主键、分区列另受其约束。
  • 不同步独立的默认值设置和删除,例如 ALTER TABLE t ALTER COLUMN qty SET DEFAULT 9、ALTER TABLE t ALTER COLUMN qty DROP DEFAULT。CREATE TABLE、ADD COLUMN、MODIFY COLUMN 中的常量默认值按映射保留。
  • 过滤函数默认值,例如 DEFAULT CURRENT_TIMESTAMP、DEFAULT CURRENT_TIMESTAMP(6)、DEFAULT NOW()、DEFAULT (UUID_TO_BIN(UUID()))。
  • 修改列时,目标返回 Can not change default value 或 Cannot shorten string length,会记录警告并跳过该条目标 DDL;该条语句中的类型、长度等修改也不会生效。
  • 类型、长度和精度变更受目标版本及列用途限制,不保证所有转换均可执行。例如 VARCHAR(100) 扩为 VARCHAR(200) 与缩为 VARCHAR(50) 的执行结果可能不同。
  • 过滤 MEDIUMBLOB、LONGBLOB 字段的加列、改列操作,例如 ADD COLUMN payload MEDIUMBLOB。TINYBLOB、BLOB 映射为 VARBINARY,目标版本需为 StarRocks 3.0 及以上。
  • 一条包含多个操作的 ALTER TABLE 可能拆成多条目标 DDL,分别执行或过滤,不保证整条源端语句原子生效。例如 ADD COLUMN enabled BOOLEAN, MODIFY COLUMN name VARCHAR(100), DROP COLUMN obsolete。

源端数据源

前置条件

条件说明
账号权限

文档:MySQL / MariaDB 需要的权限

开启 Binlog

[mysqld]
log-bin=mysql-bin # 开启 Binlog
binlog-format=ROW # 选择 ROW 模式
binlog_row_image=FULL # 变更带所有列数据

任务参数

参数名称说明
parseBinlogParallel

增量解析 Binlog 的并发数

parseBinlogBufferSize

用于增量解析 Binlog 的环形队列大小

maxTransactionSize

单事务最大数据条数,超过则分段刷出

limitThroughputMb

限制增量 Binlog 流量

extraDDL

兼容额外的 DDL 同步,包括 PT, GHOST, ALI_DMS, PT_GHOST

fullDataSqlConditionEnabled

将过滤条件拼入 SQL 中进行源端数据扫描,此参数只针对全量迁移有效

srcTimeZone

源端时区,例如 +08:00, Asia/Shanghai, America/New_York 等

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


目标端数据源

前置条件

条件说明
账号权限

具备 SELECT, DDL 权限(可选)

网络准备

迁移同步节点(sidecar)可连接 StarRocks FE QueryPort 和 FE/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: 通用参数配置请参考 通用参数及功能

联系我们
微信二维码

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