---
title: "创建 OceanBase 数据库至 DataHub 的数据同步项目 | OceanBase 文档中心"
description: 创建 OceanBase 数据库至 DataHub 的数据同步项目 本文为您介绍如何同步 OceanBase 数据库（MySQL 和 Oracle 租户）的数据至 DataHub。 前提条件 OMS 支持自动创建 Topic。如果您需要自行创建，请提前在 DataHub 控制台准备。详情请参见 创建 Topic 。 …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 3.2.2 企业版

# 创建 OceanBase 数据库至 DataHub 的数据同步项目

更新时间：2023-06-25 10:20:37

本文为您介绍如何同步 OceanBase 数据库（MySQL 和 Oracle 租户）的数据至 DataHub。

## 前提条件

OMS 支持自动创建 Topic。如果您需要自行创建，请提前在 DataHub 控制台准备。详情请参见 [创建 Topic](https://help.aliyun.com/document_detail/158792.html)。

## 使用限制

- 全量同步时，不支持同步无主键表。
 - 增量同步时，不支持同步没有分片列的无主键表。
 - 同步 OceanBase 数据库的增量数据至 DataHub 时，其中包含表结构至 DataHub Schema 的初始化 Schema。
 - 当一条链路意外中断进行断点续传时，DataHub 内可能会存在部分重复数据（最近一分钟内），因此下游系统需要具备排重能力。
 - OMS 支持字符集配置为 UTF8 和 GBK 时的数据同步。
 - 待同步的表名和其中的列名不能包含中文字符。

DataHub 相关的使用限制如下：

- DataHub 官方限制一条消息具体的大小根据云环境而定，通常为 1 MB。
 - 由于是攒批发送，DataHub 限制一次只能发送 4 MB 的消息。如果单条消息满足可发送的前提，您可以通过更改 Connector Sink 端的配置项 `batch.size` 来设置攒批大小，默认为 20 条消息攒批发送（时间窗口一秒内）。
 - DataHub 的官方限制和命名规范请参见 [DataHub 的限制描述](https://help.aliyun.com/document_detail/47441.html)。
 - DataHub 支持的数据类型如下表所示。

  | 类型 | 描述 | 值域 |
  | --- | --- | --- |
  | BIGINT | 8 字节有符号整型 | -9223372036854775807 ~ 9223372036854775807 |
  | DOUBLE | 8 字节双精度浮点数 | -1.0 _10^308 ~ 1.0 _10^308 |
  | BOOLEAN | 布尔类型 | * True/False * true/false * 0/1 |
  | TIMESTAMP | 时间戳类型 | 表示到微秒的时间戳类型 |
  | STRING | 字符串，仅支持 UTF-8 编码 | 单个 STRING 列最大支持 2 MB |
  | TINYINT | 单字节整型 | -128 ~127 |
  | SMALLINT | 双字节整型 | -32768 ~ 32767 |
  | INTEGER | 4 字节整型 | -2147483648 ~ 2147483647 |
  | FLOAT | 4 字节单精度浮点数 | -3.40292347_10^38 ~ 3.40292347_10^38 |
  | DECIMAL | 数字型 | - 10^38 +1 ~ 10^38 - 1 |

  **注意**

  DataHub 中的 TINYINT、SMALLINT、INTEGER 和 FLOAT 类型，从 JAVA SDK 2.16.1-public 版本开始支持。

## OceanBase 数据库 MySQL 租户至 DataHub 同步的支持范围

- 支持同步单物理表至 DataHub 单 Topic。
 - 支持同步 OceanBase 数据库 MySQL 租户的逻辑表至 DataHub。
 - 支持增量 DML 同步：`INSERT`、`UPDATE` 和 `DELETE`。

下表为 OceanBase 数据库 MySQL 租户数据类型的支持情况。

| 数据类型 | 映射 DataHub 类型 |
| --- | --- |
| BIT | BIGINT |
| CHAR | STRING |
| BINARY | STRING |
| VARBINARY | STRING |
| INT | BIGINT |
| TINYINT | BIGINT |
| SMALLINT | BIGINT |
| MEDIUMINT | BIGINT |
| BIGINT | BIGINT **注意** DataHub 中 BIGINT 的长度限制为 -9223372036854775807~9223372036854775807。在数据库中，如果数字长度超过该阈值，可能会出现同步数据溢出的问题。 |
| 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 | 数据至同步进程内存中的时间戳，由时间 + 5 位递增数字组成。如果发生时钟回退的情况，会导致数据不一致。 |
| oms_record_type | STRING | 变更类型，包括 `UPDATE`、`INSERT` 和 `DELETE`。 |
| oms_is_before | STRING | 如果是 `UPDATE` 类型，Y 表示该条数据为变更前的数据。 |
| oms_is_after | STRING | 如果是 `UPDATE` 类型，Y 表示该条数据为变更后的数据。 |

## 操作步骤

1. 新建同步项目。

      1. 登录 OMS 控制台。
      2. 在左侧导航栏，单击 **数据同步**。
      3. 在 **数据同步** 页面，单击 **新建同步项目** > **新建数据库到大数据同步项目**。
 2. 选择源和目标。

      1. 在 **选择源和目标** 页面，选择 **同步类型** 为 **OB→DataHub**。
      2. 设置 **同步链路名称** **。**

        **说明**

        同步链路名称支持中文、数字和英文字母的组合，且不得超过 64 个字符。
      3. 单击 **标签** 文本框，在下拉列表中选择目标标签。您也可以单击 **管理标签**，进行新建、修改和删除。详情请参见 [通过标签管理数据同步项目](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373406)。
      4. 设置 **源端**。

        | 参数 | 描述 |
        | --- | --- |
        | 表类型 | 包括 **单表** 和 **逻辑表**。 |
        | 数据源 | * 当选择表类型为 **单表** 时：如果您已创建 OceanBase 数据源，请从下拉列表中进行选择。如果未创建，请单击下拉列表中的 **添加数据源**，在右侧对话框进行添加。参数详情请参见 [添加 OceanBase 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373440)。 * 当选择表类型为 **逻辑表** 时：如果您已创建 DBP 或 IDB 数据源，请从下拉列表中进行选择。如果未创建，请单击下拉列表中的 **添加数据源**，在右侧对话框进行添加。参数详情请参见 [添加 DBP 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373441) 和 [添加 IDB 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373442)。 |
        | 数据表 | 在 **数据表** 中输入关键字搜索源端数据表。 * 选择 **表类型** 为 **单表** 时，支持单表同步至 DataHub 的单个 Topic。 * 选择 **表类型** 为 **逻辑表** 时，如果选择 DBP 数据源，逻辑表自动同步自数据访问代理 DBP。如果选择 IDB 数据源，则需要手动输入 GUID。 **注意** 待同步的表名和其中的列名不能包含中文字符。 |
        | 分片列 | 在分片列下拉列表中选择目标分片列。您可以选择多个字段作为分片列，该参数为选填。 分片列用于区分可并发写入至 MySQL 数据库的数据行。如果分片列值相同，则不会出现并发写入的情况。 **注意** 请保证分片列的正确性，分片列填写错误会导致数据同步项目失败。 |
        | ETL 选项 | OceanBase 数据库的数据同步至 DataHub 支持简单的 ETL。 您可以单击 **ETL 选项**。在 **ETL 选项** 对话框中，您可以输入标准 SQL 语句的 `WHERE` 条件来配置行过滤。只有满足 `WHERE` 条件的数据才会被同步至目标数据源，以实现数据的行过滤。 **注意** 如果选择 IDB 数据源，则不显示该参数。 |
      5. 设置 **目标端**。

        | 参数 | 描述 |
        | --- | --- |
        | 数据源 | 如果您已创建 DataHub 数据源，请从下拉列表中进行选择。如果未创建，请单击下拉列表中的 **添加数据源**，在右侧对话框进行添加。参数详情请参见 [添加 DataHub 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373427)。 如果您需要查看 OMS 中所有已创建的数据源，请单击页面下方的 **查看数据源**。 |
        | Topic | 输入一个已存在的 Topic。如果您未创建 Topic，可以直接输入 Topic 名称，并在设置同步选项时勾选 **初始化结构**，OMS 会在目标端自动创建该 Topic。 **注意** 如果指定的 Topic 不存在，则必须勾选 **初始化结构**。 |
      6. 单击 **下一步**。
 3. 设置同步类型。

      1. 设置源端同步类型。

        | 参数 | 描述 |
        | --- | --- |
        | 同步类型和配置 | 包括 **结构同步**、**全量同步** 和 **增量同步**。 增量同步的 DML 包括 **Insert**、**Delete** 和 **Update**，默认全部勾选。 |
        | 同步起始位点 | 指定同步某个时间节点之后的数据，默认为当前系统时间。您可以选择时间节点，也可以直接输入时间戳。 该位点与当前归档日志的保留时间密切相关。如果无特殊要求，可以从当前位点开始启动。 |
      2. 单击 **下一步**。
 4. 系统自动完成对数据同步项目的预检查。

   在 **预检查** 环节，OMS 仅检查列名、列类型，以及是否为空，不检查长度和默认值。如果预检查报错，请排查并处理问题后，重新执行预检查，直至预检查成功。如果需要跳过某项预检查，您可以在系统配置中进行设置。
 5. 单击 **启动任务**，启动该项目的增量同步等各项任务。

   如果您暂时无需启动项目，请单击 **保存**，跳转至数据同步项目的详情页面，您可以根据需要手动启动数据同步项目。如果您需要查看详情，请参见 [查看数据同步项目详情](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373403)。

如果数据同步项目运行报错（通常由于网络不通或进程启动过慢导致），您可以在数据同步的列表或详情页面，单击 **恢复**。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
