---
title: "配置迁移或同步对象的匹配规则 | OceanBase 文档中心"
description: 配置迁移或同步对象的匹配规则 本文为您介绍迁移/同步对象匹配规则的背景信息、使用限制、配置方式，以及库到库场景示例和常见问题。 背景信息 您在创建数据迁移或数据同步任务时，需要指定具体的迁移或同步的对象。OMS 提供指定对象、导入对象和匹配规则三种方式供您选择。其中匹配规则方式支持您通过编写通配规则指定需要迁移或同步…
---
切换语言

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

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

# 配置迁移或同步对象的匹配规则

更新时间：2026-04-14 15:36:02

本文为您介绍迁移/同步对象匹配规则的背景信息、使用限制、配置方式，以及库到库场景示例和常见问题。

## 背景信息

您在创建数据迁移或数据同步任务时，需要指定具体的迁移或同步的对象。OMS 提供指定对象、导入对象和匹配规则三种方式供您选择。其中匹配规则方式支持您通过编写通配规则指定需要迁移或同步的对象，并且支持配置源端及目标端的对象映射逻辑，通过简单、高效的字符串匹配能力，可以有效地降低您在待迁移/同步对象数量众多时的配置难度。同时，符合匹配规则的新增表可以通过增量 DDL 的方式自动同步至目标端。数据迁移增量 DDL 的详情请参见 [同步 DDL 的支持范围和使用限制](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023286)。

### 库到库的通配规则说明

OMS 支持的数据库到数据库的通配规则及其要求如下。

#### 说明

下方表格中的星号（*）表示通配规则。

| **类别** | **支持的通配规则** | **示例** | **说明** |
| --- | --- | --- | --- |
| 库表平迁 | *.* | kd_test*.person* | 将源端 kd_test 开头的所有库下 person 开头的所有表迁移至目标端，库名、表名保持不变。 |
| 库表平迁 | *.<源端表> | kd_test*.person | 将源端 kd_test 开头的所有库下 person 表迁移至目标端，库名、表名保持不变。 |
| 库表平迁 | <源端库>.* | kd_test.person* | 将源端名为 kd_test 的库下 person 开头的所有表迁移至目标端，库名、表名保持不变。 |
| 库表平迁 | <源端库>.<源端表> | kd_test.person | 将源端名为 kd_test 的库下名为 person 的表迁移至目标端，库名、表名保持不变。 |
| 库表重命名 | <源端库>.<源端表>=<目标端库>.<目标端表> | kd_test.person=kd_test_new.person_new | 将源端名为 kd_test 的库下名为 person 的表迁移至目标端，并且将库 kd_test 重命名为 kd_test_new，表 person 重命名为 person_new。 |
| 库表重命名 | <源端库>.*=<目标端库>.* | kd_test.person*=kd_test_new.person* | 将源端名为 kd_test 的库下 person 开头的所有表迁移至目标端，并且将库 kd_test 重命名为 kd_test_new，表名保持不变。 |
| 库表重命名 | *.<源端表>=*.<目标端表> | kd_test*.person=kd_test*.person_new | 将源端 kd_test 开头的所有库下名为 person 的表迁移至目标端，并且将表 person 重命名为 person_new，库名保持不变。 |
| 库表汇聚 | <源端库>.*=<目标端库>.<目标端表> | kd_test.person*=kd_test.person_all | 将源端名为 kd_test 的库下 person 开头的所有表汇聚至目标端库 kd_test 下的表 person_all 中。 |
| 库表汇聚 | *.<源端表>=<目标端库>.<目标端表> | kd_test*.person=kd_test_all.person | 将源端以 kd_test 开头的所有库下名为 person 的表汇聚至目标端库 kd_test_all 下的表 person 中。 |
| 库表汇聚 | *.*=<目标端库>.<目标端表> | kd_test*.person*=kd_test_all.person_all | 将源端以 kd_test 开头的所有库下以 person 开头的所有表汇聚至目标端库 kd_test_all 下的表 person_all 中。 |
| 库表汇聚 | *.*=<目标端库>.* | kd_test*.person*=kd_test_all.person* | 将源端以 kd_test 开头的所有库下以 person 开头的所有表汇聚至目标端库 kd_test_all 下，表名保持不变。 |
| 库表汇聚 | *.*=*.<目标端表> | kd_test*.person*=kd_test*.person_all | 将源端以 kd_test 开头的所有库下以 person 开头的所有表汇聚至目标端以 kd_test 开头的库下的表 person_all 中，库名保持不变。 |

通配规则要求如下：

- 目标端的库名和表名不允许同时为通配规则。例如，`kd_test*.person*=kd_test*.person*`。
 - 如果源端库和目标端库均为通配规则，则库级别的表达式必须完全一样，表示库平迁。
 - 如果源端表和目标端表均为通配规则，则表级别的表达式必须完全一样，表示表平迁。
 - 如果目标端库为通配规则，则源端库必须为通配规则。
 - 如果目标端表为通配规则，则源端表必须为通配规则。

### 库到消息队列的通配规则说明

OMS 支持的数据库到消息队列的通配规则及其要求如下。

| **支持的通配规则** | **示例** | **说明** |
| --- | --- | --- |
| *.*=<Topic 名> | *.*=topic | 将多库下的多表映射到一个 Topic |
| *.<源端表>=<Topic 名> | *.b=topic | 将多库下的表 b 映射到一个 Topic |
| <源端库>.*=<Topic 名> | a.*=topic | 将库 a 下的多张表映射到一个 Topic |
| <源端库>.<源端表>=<Topic 名> | a.b=topic | 将库 a 下的表 b 映射到一个 |

## 使用限制

- OMS 允许输入多条规则，但需要注意每条规则不能跨行且前后不允许有空格。
 - 迁移或同步对象规则不允许为空，排除对象规则允许为空。
 - OMS 不支持在结构迁移、全量迁移期间进行 DDL 变更。
 - 通过匹配规则的方式选择迁移或同步对象时，OMS 不支持表名包含特殊字符（包括换行、空格，以及 .|"'`()=;/&*?[][!]）。
 - OMS 不支持通过多条匹配规则，将源端同一个库下的不同表映射至目标端的不同库下。例如，`a.a* = b.a* & a.b* = c.b*`。
 - 存在库或表汇聚的场景下，不支持反向增量。

  #### 说明

  OMS 仅在保存或启动数据迁移/数据同步任务时，根据已有的库表是否存在汇聚场景进行判断。如果在任务运行过程中新出现库表汇聚的场景，则不会被 OMS 拦截，可能出现反向增量无法正确识别库表映射关系，导致数据质量问题。
 - OMS 暂不支持 CREATE DATBASE 的 DDL 语句。如果新建的库名在迁移/同步的匹配规则内，您需要手动在目标端创建数据库才能继续新增库的数据同步。

## 注意事项

- 当您完成配置迁移/同步对象规则和排除对象规则后，如果源端表名在迁移/同步对象规则和排除对象规则的差集内，则相关对象可以被选择。

  #### 说明

  差集是指对于给定的两个集合，返回一个包含所有存在于第一个集合但不存在于第二个集合的元素的新集合。
 - 开启同步 DDL 功能后，当您使用 DDL 语句在源端创建一张新表或者修改一张表结构时，如果对应的表名在迁移/同步对象规则和排除对象规则的差集内，则该 DDL 语句可以被 OMS 同步至目标端。
 - 库表汇聚场景下：

     - 建议您使用匹配规则的方式映射源端和目标端的关系。
     - 建议您自行在目标端创建表结构。如果使用 OMS 创建，请在结构迁移步骤跳过部分失败对象。
     - 如果您在库或表汇聚的场景下勾选了 **DDL 同步**，可能存在误删风险。例如，源端多个库或表汇聚至目标端的一个库或表中。此时，删除源端的一个库或表，可能导致目标端的汇聚库或表被删除。
     - 您在创建数据迁移任务时，请将 **全量迁移** > **目标端表对象存在记录时处理策略** 配置为 **忽略**。

      #### 说明

      选择 **忽略**，全量校验将使用 `IN` 模式拉取数据，无法校验目标端存在源端没有的数据的场景，并且校验性能会有一定程度降级。
 - 如果表存在重命名映射，则优先重命名映射。例如，同时存在规则 `a.b[0-3]` 和 `a.b[3-5]=a.c`，则表 `a.b3` 重命名为 `a.c`。
 - 执行 `RENAME TABLE` 的 DDL 语句时，如果 RENAME 后的表对象不在原匹配规则或排除规则内，可能导致非预期同步问题，请谨慎操作。

## 配置库到库的匹配规则

1. 新建数据迁移任务，并配置至 **选择迁移对象** 步骤。

   详情请参见相应类型的 [数据迁移任务](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023033) 文档。
 2. 在 **选择迁移对象** 区域，选中 **匹配规则**。

   ![oms74-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms74-zh.png)
 3. 输入 **迁移对象规则** 和 **排除对象规则**（可选）。支持的匹配规则详情请参见 [通配符规则说明](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023207)。

   #### 说明

   如果您配置的规则中包含空格，可能导致迁移对象有误。

   迁移 Oracle 数据库的数据至 OceanBase 数据库 Oracle 兼容模式时：

      - 如果您在 **选择迁移类型** 步骤已选择 **结构迁移**，您可以选择一个或多个库的 Sequence（序列）、Type（自定义类型）、Table（表）、View（视图）、Procedure（存储过程）、Function（函数）、Package（包）和 Synonym（仅支持私有同义词）作为迁移对象。

       #### 注意

       仅选择 **结构迁移** 时，请至少选择一个对象。除 **结构迁移** 外还选择其他类型时，请至少选择一个表对象。

       以下对象仅在您选择了 **结构迁移** 时才会触发。其中不同类型对象的迁移时机如下：

            - 表、视图、存储过程、函数、同义词、自定义类型、包对象将在结构迁移时自动迁移。
            - 普通索引、触发器对象的迁移触发时机可以通过迁移选项设置。
            - 序列、约束、外键对象将在正向切换时补充迁移。
      - 如果您在 **选择迁移类型** 步骤未选择 **结构迁移**，仅支持选择一个或多个库的表作为迁移对象。
      - 视图、函数和存储过程等 PL 对象不支持重命名、设置行过滤条件。
 4. 单击 **校验**。

   如果您需要查看匹配结果，请在校验成功后单击 **预览对象** 进行查看。您填写的通配迁移对象规则和排除对象规则，会同时应用于表和视图。**匹配结果** 包括最终对象、新增对象和减少对象。

   | 对象 | 描述 |
   | --- | --- |
   | 最终对象 | 配置的匹配规则最终匹配的迁移对象。 |
   | 新增对象 | 最终匹配结果和前一次配置的匹配结果相比，新增的迁移对象。 |
   | 减少对象 | 最终匹配结果和前一次配置的匹配结果相比，减少的迁移对象。 |

   通过匹配规则的方式选择需要迁移的对象后，您可以进行设置过滤条件的操作。

   ![oms75-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms75-zh.png)

      1. 在 **匹配结果** > **最终对象** 面板，鼠标悬停至目标表对象。
      2. 单击显示的 **设置**。
      3. 在 **设置** 对话框中，输入标准的 SQL 语句中的 WHERE 子句，来配置行过滤。配置完成后，单击 **验证语法**。详情请参见 [SQL 条件过滤数据](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023209)。
      4. 语法验证通过后，单击 **确定**。

        您还可以在 **查看列** 区域，查看迁移对象的列信息。
 5. 根据提示完成后续的任务配置。

### 场景示例

- 库表平迁

  将源端 jenkins_api 开头的所有库下，以 test 开头的所有表迁移至目标端，库名、表名保持不变。匹配规则的配置如下。

  ![migration-30-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/migration-30-zh.png)
 - 库表重命名

  将源端名为 jenkins_my2dh_one 的库下，以 test 开头的所有表迁移至目标端，并且将库 jenkins_my2dh_one 重命名为 jenkins_my2dh_one_new，表名保持不变。匹配规则的配置如下。

  ![migration-31-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/migration-31-zh.png)
 - 库表汇聚

  将源端以 jenkins_api 开头的所有库下，以 order 开头的所有表汇聚至目标端库 jenkins_api_all 下的表 order 中。匹配规则的配置如下。

  ![migration-32-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/migration-32-zh.png)
 - 配置排除对象规则

  设置无需同步源端名为 jenkins_api_mysql56 的库下的历史表和日志表，且历史表以 "history_" 开头，日志表以 log 结尾。匹配规则的配置如下。

  ![migration-33-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/migration-33-zh.png)

## 配置库到消息队列的匹配规则

同步数据库的数据至 DataHub、Kafka 和 RocketMQ 时，您可以通过配置匹配规则的方式选择需要同步的对象。

1. 新建数据同步任务，并配置至 **选择同步对象** 步骤。

   详情请参见相应类型的 [数据同步任务](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023000) 文档。
 2. 在 **选择同步对象** 区域，选中 **匹配规则**。

   ![oms13-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms13-zh.png)
 3. 输入 **同步对象规则** 和 **排除对象规则**（可选）。支持的匹配规则详情请参见 [通配符规则说明](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023207)。

   三种类型的数据同步任务在进行匹配规则配置时，业务逻辑存在差异。

      - 目标端为 DataHub 时，支持选择 Topic 类型为 Tuple 或 BLOB。

            - Tuple 类型仅支持输入已有的 Topic 名称，且不支持通配符和空格。选中表后，会一对一映射到 Topic 中。
            - BLOB 类型支持多对一或一对一映射，请注意不支持空格。

             如果选择同步类型时已选择 **结构同步**，您可以输入已有 Topic 的名称或新建 Topic，仅支持选择一种映射方式进行 Topic 的创建或选择。如果选择同步类型时未勾选 **结构同步**，则仅支持输入已有 Topic 的名称。
      - 目标端为 Kafka 或 RocketMQ 时，支持多对一或一对一映射，请注意不支持空格。

       如果选择同步类型时已勾选 **结构同步**，您可以输入已有 Topic 的名称或新建 Topic。如果选择同步类型时未勾选 **结构同步**，则仅支持输入已有 Topic 的名称。
 4. 单击 **校验**。

   如果您需要查看匹配结果，请在校验成功后单击 **预览对象** 进行查看。**匹配结果** 包括最终对象、新增对象和减少对象。

   通过匹配规则的方式选择数据库需要同步的对象后，您可以进行设置过滤条件和分片列等操作。

   ![oms14-zh](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/oms/oms-enterprise/oms14-zh.png)

      1. 在 **匹配结果** > **最终对象** 面板，鼠标悬停至目标表对象。
      2. 单击显示的 **设置**。
      3. 在 **设置** 对话框中，您可以进行以下操作。

             - 同步 OceanBase 数据库的对象时，在 **行过滤条件** 区域的文本框中，输入标准的 SQL 语句中的 WHERE 子句，来配置行过滤。配置完成后，单击 **验证语法**。详情请参见 [SQL 条件过滤数据](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000004023209)。
             - 在 **分片列** 下拉列表中，选择目标分片列。您可以选择多个字段作为分片列，该参数为可选。

              选择分片列时，如果没有特殊情况，默认选择主键即可。如果存在主键负载不均衡的情况，请选择唯一性标识且负载相对均衡的字段作为分片列，避免潜在的性能问题。分片列的主要作用如下：

                     - 负载均衡：在目标端可以进行并发写入的情况下，通过分片列区分发送消息需要使用的特定线程。
                     - 有序性：由于存在并发写入可能导致的无序问题，OMS 确保在分片列的值相同的情况下，用户接收到的消息是有序的。此处的有序是指变更顺序（DML 对于一列的执行顺序）。
      4. 单击 **确定**。

## 常见问题

- 权限不足

  请注意源端用户的权限设置问题。如果您授予用户的权限不足，部分对象未被 OMS 从前端展示出来，会导致您不能正确配置匹配规则。因此您需要将未授予权限的对象加入 **排除对象规则**，以避免 OMS 因无法找到目标端对象而造成数据迁移或数据同步任务中断。
 - 不支持过滤 DML

  在未开启同步 DDL 的情况下，OMS 允许使用匹配规则的方式选择对象。在增量同步的过程中，如果新建表满足匹配规则，相关的 DDL 语句会被忽略，但 OMS 会继续同步 DML 语句，这样会造成无法写入目标端对象而造成数据迁移或数据同步任务中断，因此您需要在目标端新建表或者将表加入黑名单。

 上一篇 下一篇 ![有帮助](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) 咨询热线
