首批通过分布式安全可靠测评,为关键业务系统打造
创建 MySQL 数据库至 DataHub 的数据同步项目
更新时间:2023-06-25 10:20:37
本文为您介绍如何同步 MySQL 数据库的数据至 DataHub。
前提条件
已在 DataHub 创建 Topic。
您可以在 OMS 控制台填写一个新的 Topic 名称,OMS 会根据该名称在 DataHub 自动创建。 注意
您在 OMS 中填写 Topic 名称时,请遵循 DataHub 中要求的 Topic 的命名规范。
如果您需要自行创建,请提前在 DataHub 控制台准备。详情请参见 创建 Topic。
已为自建 MySQL 数据库开启了 Binlog,详情请参见 为 MySQL 数据库开启 Binlog。
已为源端自建 MySQL 数据库创建专用于数据迁移任务的数据库用户,并为其赋予了相关权限。详情请参见 创建数据库用户并授权。
使用限制
当一条链路意外中断进行断点续传时,可能会存在部分重复数据(最近一分钟内),需要下游具备排重能力。
OMS 支持字符集配置为 UTF8 和 GBK 时的数据同步。
待同步的表名和其中的列名不能包含中文字符。
DataHub 相关的使用限制如下:
DataHub 官方限制一条消息具体的大小根据云环境而定,通常为 1 MB。
由于是攒批发送,DataHub 限制一次只能发送 4 MB 的消息。如果单条消息满足可发送的前提,您可以通过更改 Connector Sink 端的配置项
batch.size来设置攒批大小,默认为 20 条消息攒批发送(时间窗口一秒内)。
MySQL 至 DataHub 同步的支持范围
支持单物理表同步至 DataHub 单 Topic。
支持增量 DML 同步:
INSERT、UPDATE和DELETE。同步 MySQL 的增量数据至 DataHub 时,其中包含表结构至 DataHub Schema 的初始化 Schema。
下表为 MySQL 数据类型的支持情况。
| 数据类型 | 映射 DataHub 类型 |
|---|---|
| BIT | BIGINT |
| CHAR | STRING |
| BINARY | STRING |
| VARBINARY | STRING |
| INT | BIGINT |
| TINYINT | BIGINT |
| SMALLINT | BIGINT |
| MEDIUMINT | BIGINT |
| BIGINT | BIGINT |
| FLOAT | FLOAT |
| DOUBLE | DOUBLE |
| DECIMAL | DECIMAL |
| DATE | STRING |
| TIME | STRING |
| YEAR | STRING |
| DATETIME | STRING |
| TIMESTAMP | STRING |
| VARCHAR | STRING |
| TINYBLOB | STRING |
| TINYTEXT | STRING |
| BLOB | STRING |
| TEXT | STRING |
| MEDIUMBLOB | STRING |
| MEDIUMTEXT | STRING |
| LONGBLOB | STRING |
| LONGTEXT | STRING |
补充 Properties
如果自行创建 Topic,启动同步任务前,请在 DataHub 的 Schema 中补充下述 Properties。如果由 OMS 自动创建 Topic 和结构同步,OMS 会自动补充下述 Properties。
| 名称 | 类型 | 描述 |
|---|---|---|
| oms_timestamp | STRING | 发生变更的时间。 |
| oms_table_name | STRING | 源端为表时,变更表名。 |
| oms_database_name | STRING | 源端为数据库时,变更库名。 |
| oms_sequence | STRING | 变更序列号。承诺相同机器上,同一个主键不断递增。 |
| oms_record_type | STRING | 变更类型,包括 UPDATE、INSERT 和 DELETE。 |
| oms_is_before | STRING | 如果是 UPDATE 类型,Y 表示该条数据为变更前的数据。 |
| oms_is_after | STRING | 如果是 UPDATE 类型,Y 表示该条数据为变更后的数据。 |
操作步骤
进入 新建同步项目 页面。
登录 OMS 控制台。
在左侧导航栏,单击 数据同步。
在 数据同步 页面,单击 新建同步项目 > 新建数据库到大数据同步项目。
选择源和目标。
选择 同步类型 为 MySQL →DataHub。
设置 同步链路名 称 。
说明
同步链路名称支持中文、数字和英文字母的组合,且不得超过 64 个字符。
单击 标签 文本框,在下拉列表中选择目标标签。您也可以单击 管理标签,进行新建、修改和删除。详情请参见 通过标签管理数据同步项目。
设置 源端。
参数 描述 表类型 目前只能选择 单表,即支持 MySQL 单表同步至 DataHub 的单个 Topic。 数据源 如果您已创建 MySQL 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 添加数据源,在右侧对话框进行添加。参数详情请参见 添加 MySQL 数据源。 数据表 在下拉列表中输入关键字,搜索目标源端数据表。 注意 待同步的表名和其中的列名不能包含中文字符。 分片列 在分片列下拉列表中选择目标分片列。您可以选择多个字段作为分片列,该参数为选填。 分片列用于区分可并发写入至 MySQL 数据库的数据行。如果分片列值相同,则不会出现并发写入的情况。 注意 请保证分片列的正确性,分片列填写错误会导致数据同步任务失败。 设置 目标端。
参数 描述 数据源 如果您已创建 DataHub 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 添加数据源,在右侧对话框进行添加。参数详情请参见 添加 DataHub 数据源。 如果您需要查看 OMS 中所有已创建的数据源,请单击页面下方的 查看数据源。 Topic 输入一个已存在的 Topic。如果您未创建 Topic,可以直接输入 Topic 名称,并在设置同步选项时勾选 结构初始化,OMS 会在目标端自动创建该 Topic。 注意 如果指定的 Topic 不存在,则必须勾选 初始化结构。 单击 下一步。
设置同步类型。
设置源端同步类型。
参数 描述 同步类型和配置 包括 结构同步、全量同步 和 增量同步。 增量同步的 DML 包括 Insert、Delete 和 Update,默认全部勾选。 同步起始位点 指定同步某个时间节点之后的数据,默认为当前系统时间。您可以选择时间节点,也可以直接输入时间戳。 该位点与当前归档日志的保留时间密切相关。如果无特殊要求,可以从当前位点开始启动。 单击 下一步。
系统自动完成对数据同步项目的预检查。
在 预检查 环节,OMS 会检测逻辑表 Schema 和物理表 Schema 是否一致。目前仅检查列名、列类型,以及是否为空,不检查长度和默认值。如果预检查报错,请排查并处理问题后,重新执行预检查,直至预检查成功。
单击 启动任务,启动该项目的增量同步等各项任务。
如果您暂时无需启动任务,请单击 保存,跳转至数据同步项目的详情页面,您可以根据需要手动启动数据同步项目。如果您需要查看详情,请参见 查看数据同步项目详情。
如果数据同步项目运行报错(通常由于网络不通或进程启动过慢导致),您可以在数据同步的列表或详情页面,单击 恢复。