对于中小规模的数据库或者个人开发者,您可以使用canal将MySQL数据同步到表格存储。canal部署简单,易于运维,适用于中小规模MySQL数据同步。
前提条件
- 已开启MySQL binlog功能,并且配置binlog-format为ROW模式。
- 已创建目标Tablestore表。具体操作,请参见创建数据表。
注意 目标数据表中主键列的个数、顺序和数据类型必须与源数据表中主键列的个数、顺序和数据类型相匹配。
背景信息
使用流程
使用canal将MySQL数据同步到表格存储的使用流程如下:

步骤一:部署Deployer
说明 由于Deployer包中不存在为表格存储定制的jar包或者配置,因此使用canal对接表格存储时的部署方式与使用canal对接MySQL时的部署方式类似。具体操作,请参见canal快速入门。
步骤二:部署Client-Adapter
步骤三:同步MySQL全量数据
执行以下命令调用Client-Adapter服务的方法触发同步任务。此时,canal会先中止增量数据传输,然后同步全量数据。待全量数据同步完成后,canal会自动进行增量数据同步。
- 命令格式
curl "hostip:port/etl/type/key/task" -X POST
- 示例
curl "localhost:8081/etl/tablestore/ts/mytest.yml" -X POST
详细配置项说明请参见下表。
配置项 | 是否必选 | 示例 | 描述 |
---|---|---|---|
hostip | 是 | localhost | 部署canal服务的机器IP地址和端口。
当在部署canal服务的机器上执行此命令时,可设置hostip为localhost。 |
port | 是 | 8081 | |
type | 是 | tablestore | 下游数据库类型,必须设置为tablestore。 |
key | 是 | ts | 使用的Adapter标识,必须与application.yml中canal.conf: canalAdapters: groups: outerAdapters下key值相同。 |
task | 是 | mytest.yml | 任务配置文件的名称,必须与步骤二:部署Client-Adapter中创建的.yml格式的文件名称相同。 |
全量数据同步开始后,您可以在日志中查看Adapter中TablestoreWriter的传输日志变化,如下图所示。

源表和目标Tablestore表中字段映射
canal支持源表到目标Tablestore表的字段名称以及字段类型映射,对应于dbMapping.targetColumns字段中的映射配置。支持作为目标类型配置在$后面的字段类型请参见下表。
源表中字段类型 | 目标Tablestore表中字段类型 |
---|---|
string | string |
int | int |
integer | |
bool | bool |
boolean | |
binary | binary |
double | double |
float | |
decimal |
注意:本文归作者所有,未经作者允许,不得转载